Как принимать ввод, когда вывод постоянно работает - PullRequest
1 голос
/ 29 мая 2020

Итак, я на самом деле пытаюсь создать приложение для секундомера, которое действует как точный секундомер, поэтому ему нужно вводить данные, поэтому я хочу делать каждый раз, когда пользователь вводит что-то, l oop сломается ...

Это мой код ..........

public class Stop {
    public static void stopwatch() {
        Scanner sc = new Scanner(System.in);       

        System.out.println("Enter anything when you want to stop");
        for(double i = 0; true; i+=0.5) {
            System.out.println(i);

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

        }        
    }
}

Итак, я хочу ввести ввод, но он должен быть необязательным независимо от того, входит пользователь или нет, если он входит l oop сломается, иначе он продолжится ...

Мой результат должен быть похож на

Enter anything when you want to stop
0.0
0.5
1.0
1.5
stop
You stopped

Как мне это сделать?

1 Ответ

1 голос
/ 29 мая 2020

Вы можете сделать это следующим образом:

    public static void stopwatch() {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter anything when you want to stop");

        for (double i = 0; true; i += 0.5) {
            try {
                if (!br.ready()) {
                    System.out.println(i);
                    Thread.sleep(500);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

Вы должны ввести что-то и нажать Enter, если вы запускаете это в консоли IDE. Не используйте Сканер, поскольку он блокирует и ожидает ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...