实现用户输入
2016-11-22 20:01 backyyan 阅读(447) 评论(0) 编辑 收藏 举报java中大多是通过定义输入/输出流对象来实现数据的输入输出的。但同时也需要通过键盘获得用户的输入。java提供java.util.Scanner类,可以直接接受控制台命令行的输入。
使用System.in获得用户输入
java提供了System.in、System.out、System.err类。System.out是一个已经预先处理过的,被包装成PrintStream的对象。和System.out一样,System.err也是一个PrintStream.但是System.in就不是了,他是一个未经处理的InputStream。下面例子使用System.in获取用户键盘上的输入。代码如下:
import java.io.*; public class ReadKeyBroadDemo { public static void main(String args[])throwsIOException{ int a; System.out.print("请输入一个字符"); a=(char)System.in.read(); //获取键盘中输入并存入变量a中 System.out.print("你输入的字符是:"+a); } }
read()方法被定义为抽像方法,主要是为了继承InputStream类的子类可以针对不同的外部设备定义不同的read()方法,另外,java规定read()必须配合异常处理机制来使用。
使用Scanner类获得用户输入
java.util.Scanner类是JDK新增的一个类,可使用该类创建一个从命令行读取数据的对象,而不必再进行流的转换。Scanner类使用如下:
Scanner reader=new Scanner(System.in)
然后reader对象调用下列方法,读取用户在命令行输入的各种数据类型:next.Byte()、nextDouble()、nextFlaot();nextInt();nextLine();nextLong();nextShort().这些方法在执行时都要等待用户在命令行输入数据按回车键确认。写一个程序,使用Scanner类获取用户输入,并计算输入值的和。代码如下:
import java.util.*; public class ReadKeybroadDemo2 { public static void main(String []args){ System.out.println("请输入若干个数,每输入一个数按回车键确定"); System.out.println("最后输入一个非数字结束输入操作"); //创建读取命令行内容的Scanner对象 Scanner reader=new Scanner(System.in); Double sum=(double) 0; int m=0; while(reader.hasNextDouble()){ //如果持续读入数据 double x=reader.nextDouble(); m=m+1; sum=sum+x; } System.out.println(m+"个数的和为:"+sum); System.out.println(m+"个数的平均值为:"+sum/m); } }
在这个程序中,创建一个Scanner类的对象reader,用来读取命令行的输入内容。通过reader对象的hasNextDouble()方法,来判断是否还有后续的double类型的输入内容。如果有,通过nextDouble()方法,将读入的字符串转换成小数,并累加到变量sum上。程序最后输出sum的值和平均值。