Scanner类用来从键盘上输入数据。
Scanner 是jdk1.5新增的一个类,可以使用该类创建一个对象:
Scanner reader = new Scanner(System.in);
然后用reader对象调用下列方法,读取用户在命令行输入的各种基本数据类型:nextBoolean(),nextByte(),nextShort(),nextInt(),nextLong(),nextFloat(),nextDouble();上述方法执行时都会阻塞,程序等待用户在命令行输入数据回车确认。例如:如果用户在键盘输入一个Byte取值范围内的正数90,那么reader对象调用nextByte()、nextInt()、nextLong()、nextDouble()返回值都是true,但是需要注意的是,如果输入的是带小数点的数字,如12.34,那么reader调用nextDouble()返回值是true,调用nextByte()、nextInt()、nextLong()返回值就是false。
为了避免这样的事情发生,通常在输入数据的时候,让reader对象先调用hashNextXXX()方法等待用户输入数据,然后再调用nextXXX()方法获取用户输入的数据。
例子
public class Example {
public static void main(String args[]){
int m = 0;
double sum = 0;
Scanner reader = new Scanner(System.in);
while(reader.hasNextDouble()){
sum = sum + reader.nextDouble();
m = m + 1;
}
System.out.println("输入数据的和为"+sum);
System.out.println("这些数据的平均数为"+sum/m);
reader.close();
}
}
输出结果
123
45.6
78.9
输入非数字的字符串之后回车表示结束数据输入
输入数据的和为247.5
这些数据的平均数为82.5
上面的示例中,如果将nextDouble() 换成 nextInt(),那么在输入小数的时候就会报错:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
7176

被折叠的 条评论
为什么被折叠?



