java中Scanner的hasNext()的疑问
请问下面代码有什么区别,该如何输入才能使第一段代码不满足条件而跳出循环?
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());
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第一个问题,两段代码的区别在于阻塞的位置不同,加上一行输出代码就可以很明显地看到差别。
Test.java
另,hasNext()方法会阻塞,不代表next()方法就不会阻塞。
第二个问题,想要结束循环,在Windows环境下,需要输入Ctrl+Z;而在Unix环境下,需要输入Ctrl+D。注意,这是输入,而不是对控制台进行操作。这相当于向控制台输入一个字符,这个字符代表EOF,此时hasNext()方法返回false,循环结束。
阻塞位置不一样