【问题标题】:How to interrupt while loop if user enters something如果用户输入内容如何中断while循环
【发布时间】:2016-11-28 20:11:46
【问题描述】:

我需要能够仅在用户输入内容时中断 while 循环。否则循环应该继续。

我尝试使用if (scanner.nextLine()),但这会导致循环等待,直到输入某些内容后再继续。

在输入内容之前如何保持循环继续?

while (true) {
    if (scanner.nextLine()) {
    // statements
    }

    // standard loop statements
}

【问题讨论】:

  • 嗯,一个break 怎么会跳出循环...
  • 可能只是将while(true)改为while(!scanner.hasNext())
  • hasNext() 正在阻塞。一般来说,阻塞 IO 不是你想要的。不如检查文件是否存在?
  • 通常从控制台读取应该停止负责它的线程,但是如果你想独立地做其他事情,请在其他线程中执行它们。您可以将循环放在那里并执行,直到要求中断线程为止。无论如何,正确的解决方案需要正确的问题描述,所以我现在只能说。
  • 我可以把你送到这里,但这可能会产生比你需要的更多的问号。 stackoverflow.com/questions/18037576/…

标签: java while-loop java.util.scanner


【解决方案1】:

如果您想在用户键入单个字符时退出循环,您可能需要监听 KeyEvent。但是,如果您可以等到用户输入一行零个或多个字符并按 ENTER 键,那么您可以使用 BufferedReader 的 ready 方法。

 InputStreamReader inputStream = new InputStreamReader(System.in);
 BufferedReader bufferedReader = new BufferedReader(inputStream);
 while(true)
 {
     if (bufferedReader.ready())
     {
         String s = bufferedReader.readLine();
         // do stuff before exiting loop
         break;
     }
     // do stuff in loop 
 }

【讨论】:

  • 这是我的问题的正确答案,但是我用错了。我最终改用线程。
猜你喜欢
  • 1970-01-01
  • 2022-11-13
  • 2018-07-25
  • 2014-01-01
  • 2021-05-13
  • 1970-01-01
  • 2011-09-08
  • 2017-01-27
  • 2013-11-16
相关资源
最近更新 更多