//问题描述
Scanner sc = new Scanner(System.in); while(sc.hasNext()){ System.out.println(sc.next()); }

命令行运行不会停止,你可以一直输入数据,不会自动结束,意思就是跳不出这个循环了,原因?

解答:

hasNext()这个方法是如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时(因为标准输入流一直没有关闭,所以hasNext()方法一直等待流的下一个数据),此方法可能阻塞。扫描器将不执行任何输入。所以循环会一直下去(本质上是io流阻塞了)。
你可以设置一个终止符,调用hasNext()的重载方法hasNext(String patten):如果下一个标记与从指定字符串构造的模式匹配,则返回 true。扫描器不执行任何输入。
例:以输入"0",结束输出
Scanner sc = new Scanner(System.in);
while (!sc.hasNext("0")) {
System.out.println(sc.next());
}
仅做参考!

相关文章:

  • 2021-08-30
  • 2021-12-13
  • 2021-08-04
  • 2022-12-23
  • 2022-12-23
  • 2022-01-12
  • 2022-12-23
猜你喜欢
  • 2021-12-23
  • 2021-10-25
  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案