Scanner类

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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值