输入和输出是应用程序与用户进行交互的方式,在命令行方式下通过标准输入和输出设备(键盘和显示器的控制台),在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());
}
}
}
还有其他的next 方法,感兴趣的可以看JDK 的帮助文档。
上一次:第十六讲日期和时间的使用
下一次:第十八讲 String用法(上)
李绪成 CSDN Blog : http://blog.csdn.net/javaeeteacher
邀请您为好友:http://student.csdn.net/invite.php?u=124362&c=7be8ba2b6f3b6cc5