为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 next() 方法停止无限循环?

为什么 next() 方法停止无限循环?

智慧大石 2022-08-03 10:53:50
假设我有这个代码: 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()ifintnext()elseintkey01.next()



查看完整回答
反对 回复 2022-08-03
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

如果实现无限循环 (),Scanner.next() 将在扫描程序没有其他元素时引发 NoSuchElementException。此异常将防止无限循环。while(true)

Elliot的答案解释了为什么next()消耗了待处理的令牌;然后,如果您的循环中没有其他令牌(不是无限的,因为它具有获得false的条件)。但这不是您在内联评论中提出的问题...


查看完整回答
反对 回复 2022-08-03
  • 2 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信