如何检查控制台输入中是否写入了某些内容?

时间:2013-07-31 16:32:15

标签: java

如何检查是否在控制台输入中写入了某些内容?如果不是代码会继续下去,但如果我会写的比新的事情发生?有可能吗?

Scanner k2sk;
k2sk = new Scanner(System.in);
k2sk.nextLine();

但代码等到我写了一些东西

3 个答案:

答案 0 :(得分:2)

如果您想等待用户输入,同时又不想等待,只需将该职责分配给另一个Thread

这里我做了一个简短的例子,希望它有用:

import java.util.Scanner;
public class TestInput {

    public static void main(String[] aa)
    {
         new Thread(new T1()).start();
         System.out.println("MOVED FURTHER");
    }

    public static class T1 implements Runnable
    {

        public void run() {

            Scanner k2sk;
            k2sk = new Scanner(System.in);
            k2sk.nextLine();
            System.out.println("DONE");
        }
    }
}

答案 1 :(得分:1)

根据您提供的内容,您的程序将在k2sk.nextLine();处阻止,直到控制台中出现某些内容。虽然从技术上讲它是正确的,但这意味着你的程序,除非多线程,将永远挂起,或直到终止。

解决此问题的一种方法是使程序具有多线程,但这可能超出了程序的范围。

另一种解决方案是尝试使用实际的Console类。 This应该对此提供一些见解,但只有当您的程序围绕与用户交互时才会有效,例如提示用户按顺序提供信息。

答案 2 :(得分:0)

如果您想在读取输入后保持线程运行,我建议您专门使用一个独立的线程来异步读取输入: How to asynchronously read stdin?