Получить ввод с клавиатуры, не останавливая программу - PullRequest
2 голосов
/ 19 февраля 2012

Я пишу Java на Windows 7, и я хочу иметь возможность работать с вводом с клавиатуры, который, я могу только предположить, является стандартным вводом.

Я пытался использовать BufferedInput, System.in и Scanner, но все они требуют, чтобы программа приостановила и ожидала конца строки или возврата! Есть ли в любом случае просто собирать и записывать данные, как они используются, и не нужно ждать возвращения?

1 Ответ

2 голосов
/ 19 февраля 2012

Вот быстрое решение:

public static void main(String[] args) {

    Thread inputThread = new Thread(new Runnable() {
        @Override
        public void run() {

            Scanner scan = new Scanner(System.in);
            String input = "";
            while (true) {
                System.out.println("Type something: ");
                input = scan.nextLine();
                System.out.println("Input: "+input);
            }
        }
    });

    inputThread.start();

    while (true) {

        System.out.println("");
        System.out.println("test");

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}

Основной поток выводит «тест» каждую секунду.И inputThread просит пользователя напечатать что-то, а затем распечатать то, что он написал.Это просто «визуальное» решение, вы, конечно, не хотите что-то печатать, пока пользователь печатает.

...