输入和输出是应用程序与用户进行交互的方式,在命令行方式下通过标准输入和输出设备(键盘和显示器的控制台),在windows
应用中可以通过图形用户界面与用户进行交互,而Web
应用中主要通过浏览器和HTML
语言与用户进行交互。图形用户界面现在用的不是很多,而Web
应用比较多。而在学习Java
基本语法的时候,基本的通过命令行方式的输入和控制台方式的输出使用比较方便,可以采用这种方式。本次内容介绍基本的通过命名行方式的输入和输出。
基本输出
输出主要使用System.out.print
和System.out.println
方法。它们的区别是前者不换行,而后者输出之后会换行。可以输出任何数据类型。例如:
System.out.println(1111);
System.out.println(true);
System.out.println(2323.33);
System.out.println("
字符串");
System.out.println('a');
基本输入
下面主要介绍如何接受键盘的输入。
最基本的方式是通过System.in.read()
方法,但是该方法每次接收一个字符,方法的返回值是该字符的编码。例如,要接收一个输入,可以使用如下代码:
temp = System.in.read();
其中,temp
为int
类型变量。
如果要接收一个数字,例如22
,需要自己处理,下面的例子展示了如何把输入信息转换成数字:
【例1
】
package iotest;
public class SimpleIOTest {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("
请输入5
个整数,以空格分开,以回车结束:");
try{
//
用于保存5
个数字的数组
int a[]=new int[5];
int i=0;
int temp;
while(true){
//
获取输入字符
temp = System.in.read();
if((char)temp==' '){
//
遇到空格表示下一个整数
i++;
}
else if((char)temp=='/r'){
//
换行符结束
break;
}else{
//
把输入的字符构造成数字
a[i] = a[i]*10+Integer.parseInt(String.valueOf((char)temp));
}
}
for(int element:a){
//
循环输出5
个数字
System.out.println(element);
}
}catch(Exception e){
System.out.println("
异常:"+e.toString());
}
}
}
这种方式非常麻烦,下面介绍两种常用的方式。
使用BufferedReader
BufferedReader
对基本输入流System.in
进行了封装,使用它每次可以读入一行数据,然后可以再对数据进行分析,下面的例子完成了与上面的例子相同的功能,但是代码更容易理解,里面有很多代码不理解没有关系,先记住代码。
【例2
】
package iotest;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class BufferedReaderTest {
public static void main(String args[]){
System.out.println("
请输入5
个整数,以空格分开,以回车结束:");
try{
//
用于保存5
个数字的数组
int a[] = new int[5];
//
创建输入流对象
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//
读取一行信息
String input = reader.readLine();
//
以空格为分隔符,转换成数组
String[] numbers = input.split(" ");
//
把字符串转换为数字,并输出
for(int i=0;i<5;i++){
//
把字符串转换为数字
a[i] = Integer.parseInt(numbers[i]);
System.out.println(a[i]);
}
}catch(Exception e){
System.out.println("
异常:"+e.toString());
}
}
}
使用Scanner
使用BufferedReader
使代码简单了一些,但是还不够简单,使用Scanner
可以使代码更简单。下面的代码展示了用法。
【例3
】
package iotest;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
System.out.println("
请输入5
个整数,以空格分开,以回车结束:");
try{
//
创建Scanner
对象
Scanner scanner = new Scanner(System.in);
//
用于保存5
个数字的数组
int a[] = new int[5];
for(int i=0;i<5;i++){
//
把字符串转换为数字
a[i] = scanner.nextInt();
System.out.println(a[i]);
}
}catch(Exception e){
System.out.println("
异常:"+e.toString());
}
}
}