开发者社区> 问答> 正文

java中 使用while(Scanner.hasNextIn())出现死循环

screenshot
需求是:通过键盘随意输入几个数字,然后转变成数组,并排序
问题:while(Scanner.hasNextInt())停不下来,一直等待输入,试过以字母、符号结尾,但是都不能让循环停下来。
请各位大大们解疑释惑,或者是有更好的方法能够实现这个需求么?

展开
收起
蛮大人123 2016-05-31 11:48:55 8827 0
3 条回答
写回答
取消 提交回答
  • 这个人很懒,所以什么都不想留下~

    想要输入结束必须发送一个“输入中止的信号”,即“EOF”字符
    在windows上就是在控制台上使用Ctrl+Z
    在Unix、Linux下在控制台输入Ctrl+D

    2019-07-17 19:21:45
    赞同 1 展开评论 打赏
  • hasNext()这个方法是如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。所以循环会一直下去。此情况可以设置一个终止符,调用hasNext()的重载方法hasNext(String patten):如果下一个标记与从指定字符串构造的模式匹配,则返回 true。扫描器不执行任何输入。
    2019-07-17 19:21:45
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    你需要在循环中调用
    arr[i++] = scanner.nextInt();
    或者
    scanner.next();
    让它读取下一个数
    否则判断来判断去,都是判断的第一个。

    2019-07-17 19:21:45
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载