Почему мой цикл Java пропускает первый пользовательский ввод на первой итерации? - PullRequest
0 голосов
/ 11 октября 2019

Это может быть очень глупо. Я новичок, но по какой-то причине мой цикл for выведет два оператора print рядом друг с другом для первого цикла, не принимая пользовательский ввод. Во втором цикле цикл работает правильно.

  public static void fleschTest(Scanner key, int numPieces) {
        String textInput = "";
        for(int i = 1; i <= numPieces; i++) {
            System.out.print("\nPlease enter text sample number " + i + ": ");
            textInput = getText(key);
            System.out.println("Statistics for this text: " + textInput);
        }
    }

Этот метод вызывается в fleschTest.

    public static String getText(Scanner key) {
        String textInput = key.nextLine();
        return " " + textInput; 
    }

Текущий вывод: если число или выборка текста равно 2. Пожалуйста, введите образец текста номер 1: Статистика для этого текста:

Пожалуйста, введите образец текста номер 2: (пользовательский ввод)

Статистика для этого текста: (пользовательский ввод)

Ответы [ 2 ]

2 голосов
/ 11 октября 2019

Вы можете перейти к следующей строке после ввода пользователя, добавив пустой оператор println ():

TextInput = getText(key);
//
System.out.println();
//
System.out.println("Statistics for this text: " + textInput);
1 голос
/ 11 октября 2019

Как вы определили свой сканер ?? Для меня я могу получить пользовательский ввод с вашим кодом. Ниже приведен код, откуда я вызываю ваш метод fleshchTest. Попробуйте с ним, оно должно работать.

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    fleschTest(scanner, 3);
}

Ниже приведен мой пример вывода:

Please enter text sample number 1: John
Statistics for this text:  John

Please enter text sample number 2: Doe
Statistics for this text:  Doe

Please enter text sample number 3: Amelia
Statistics for this text:  Amelia
...