Как мне ввести строку после целых чисел через некоторое время l oop? - PullRequest
1 голос
/ 05 мая 2020

Я пытаюсь создать программу, которая подсчитывает количество сделанных кем-то шагов (программа должна остановиться, если число больше или равно 10000), но я не могу найти способ набрать «Иду домой» "а затем введите количество шагов, необходимых для возвращения домой.

Scanner scan = new Scanner(System.in);
        int totalSteps = 0;

        while(true)
        {
            int steps = scan.nextInt();
            totalSteps = totalSteps + steps;
            if(totalSteps >= 10000) {
                System.out.println("Goal reached! Good job!");
                break;
            }
           else if(steps < 10000)
            {
                String home = scan.nextLine();
                if(home.equals("Going home"))
                {
                    int extraSteps = scan.nextInt();
                    totalSteps = totalSteps + steps + extraSteps;
                    System.out.println(10000 - totalSteps + " more to reach goal.");
                }
            }
        }

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Кажется, проблема с чтением новой строки. Простое (но, возможно, не лучшее) решение выглядит следующим образом:

        Scanner scan = new Scanner(System.in);
        scan.useDelimiter("\n");
        int totalSteps = 0;

        while(true)
        {
            int steps = Integer.parseInt(scan.nextLine());
            totalSteps = totalSteps + steps;
            if(totalSteps >= 10000) {
                System.out.println("Goal reached! Good job!");
                break;
            }
            else if(steps < 10000)
            {
                String home = scan.nextLine();
                if(home.equals("Going home"))
                {
                    int extraSteps = Integer.parseInt(scan.nextLine());
                    totalSteps = totalSteps + steps + extraSteps;
                    System.out.println(10000 - totalSteps + " more to reach goal.");
                }
            }
        }

Для получения более подробной информации об этой проблеме вы можете проверить обсуждение очень похожей проблемы здесь: https://www.daniweb.com/programming/software-development/threads/232053/nextline-after-nextint-or-nextdouble-gives-trouble

0 голосов
/ 05 мая 2020

Вы должны взглянуть на это: Почему nextLine () возвращает пустую строку?

Это будет работать:

else if(steps < 10000) {
                scan.nextLine();
                String home;
                while (!(home = scan.nextLine()).isEmpty()) {
                    if (home.equals("Going home")) {
                        int extraSteps = scan.nextInt();
                        totalSteps = totalSteps + steps + extraSteps;
                        System.out.println(10000 - totalSteps + " more to reach goal.");
                    }
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...