首页 > 解决方案 > 编写一个循环,直到您在控制台中输入内容

问题描述

我正在尝试构建一个循环,当我在控制台中输入文本时执行特定的方法。我想使用 java.util.Scanner 但是当我尝试使用 .hasNext() 来检查 if() 然后 .next() 来获取输入时,它会等到我输入一些东西而不是循环。

while(true) {
    main_loop();
}

private void main_loop() {
    do_other_things(); 
    if(sc.hasNext()){
        System.out.println("user entered " + sc.next());
    } else {
        System.out.println("user entered nothing");
    }
}

我怎样才能让它输出“用户没有输入任何内容”,直到我输入一些内容,以便它输出“用户输入的 [...]”,然后继续“用户没有输入任何内容”?

标签: javawhile-loopconsolejava.util.scanner

解决方案


使用另一个线程:

public static void main(String[] args) {
    new Thread(() -> {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            if (scanner.hasNext()) {
                //... user has input
            }
            else {
                //... user does not have input
            }
    }).start();
    doSomethingElse();
}

推荐阅读