假设我有这个代码: public static void main(String[] args) { Scanner key01 = new Scanner(System.in); int input; System.out.println("Please enter a int."); while (key01.hasNext()) { if(key01.hasNextInt()) { input = key01.nextInt(); System.out.println("Thanks for input!"); } else { System.out.println("You must enter an Int"); key01.next(); //Why does this statement prevent an infinite loop? //That statement prevents //the program from constantly printing "you must enter an int" } }}key01.next() 如何防止控制台不断打印出错误消息?
2 回答
叮当猫咪
TA贡献1776条经验 获得超12个赞
您的循环处于条件 ;但是您的检查它是否特别具有.如果没有在 中调用,当挂起的令牌不是 nothing 时,将消耗它;从而引起无限循环。您只需使用挂起的令牌。Scanner.hasNext()
if
int
next()
else
int
key01.next()
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
如果实现无限循环 (),Scanner.next() 将在扫描程序没有其他元素时引发 NoSuchElementException。此异常将防止无限循环。while(true)
Elliot的答案解释了为什么next()消耗了待处理的令牌;然后,如果您的循环中没有其他令牌(不是无限的,因为它具有获得false的条件)。但这不是您在内联评论中提出的问题...
添加回答
举报
0/150
提交
取消