请问下面代码有什么区别,该如何输入才能使第一段代码不满足条件而跳出循环?
Scanner s = new Scanner(System.in);
while(s.hasNext())
{
System.out.println(s.next());
}
Scanner s = new Scanner(System.in);
while(true)
{
System.out.println(s.next());
}
第一个问题,两段代码的区别在于阻塞的位置不同,加上一行输出代码就可以很明显地看到差别。
Test.java
另,hasNext()方法会阻塞,不代表next()方法就不会阻塞。
第二个问题,想要结束循环,在Windows环境下,需要输入Ctrl+Z;而在Unix环境下,需要输入Ctrl+D。注意,这是输入,而不是对控制台进行操作。这相当于向控制台输入一个字符,这个字符代表EOF,此时hasNext()方法返回false,循环结束。