java Scanner 输入


要求,不断的输入一个整数,然后打印这个整数。下面给出代码

public class TestINput {
	public static void main(String[] args) {
		fun1();
		//fun2();
	}
	public static void fun1(){
		Scanner in = new Scanner(System.in);
		while(in.hasNextLine()){
			System.out.println(in.nextInt());
		}
	}
	public static void fun2(){
		Scanner in = new Scanner(System.in);
		while(in.hasNext()){
			System.out.println(in.nextInt());
		}
	}
}
fun1()和fun2()都能实现这个功能,但是大家有没有发现不同。如果我们不断的输入,然后按ctrl+z结束输入,我们发现fun1()报错,错误如下:

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at com.sunny.company.huaweiqj.TestINput.fun1(TestINput.java:13)
at com.sunny.company.huaweiqj.TestINput.main(TestINput.java:7)

假设我们输入数字 1 然后回车,那么此时输入缓存中为  1\n,注意\n为回车符,由于fun1用

while(in.hasNextLine()){} 来判断输入,那么当<pre name="code" class="html">in.nextInt() 读取了1后,此时缓存中还有\n,那么循环继续,下面就是<pre name="code" class="html">in.nextInt()这个语句,那么你按了ctrl+z,此时已经没有输入,所以会报错。
而fun2()用的是hasNext(),hasNext()判断\n返回的是false,所以fun2()没有报错


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangpan19910604/article/details/52353681
文章标签: java输入
个人分类: java
想对作者说点什么? 我来说一句

JavaScanner类的用法

2011年09月09日 3KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭