Почему Java читает только вторую строку ввода? - PullRequest
0 голосов
/ 26 мая 2020

Проблема с моим кодом заключается в следующем: я ввожу свой ввод в первую строку в консоли, но он не читает его, пока я что-нибудь не введу и не введу в строку 2. Имя «Джейден», пу sh введите, и ничего не происходит. Затем я печатаю (вставляю сюда любые буквы), а затем печатаю: «Ваше имя состоит из трех букв и начинается с буквы J!».
Есть идеи?

import java.util.*;
public class random {

    public static void main(String[] args) {
    // TODO Auto-generated method stub

        try (Scanner number = new Scanner(System.in)) {
            if (number.nextLine().startsWith("J") && number.nextLine().length() > 3 )
            {
                System.out.println("Your name is over 3 letters and starts with the letter J!");
            }

            else if  (number.nextLine().length() < 3)
            {
                System.out.println("Your name is too short!");
            }

            else if (number.nextLine().length() > 10)
            {
                System.out.println("Your name is too long!");
            }
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Проблема в том, что (как прокомментировал Эллиот Фриш) каждый раз, когда вы вызываете nextLine (), вы потребляете строку, поэтому в исходном операторе if

if (number.nextLine().startsWith("J") && // this nextLine reads an input line
    number.nextLine().length() > 3 )     // this nextLine reads a SECOND line

вы хотите прочитать только одна строка, поэтому вызовите nextLine только один раз и сохраните его в переменной.

Просто добавьте это после начала блока try (объявление переменной):

String numberString = number.nextLine()

, а затем замените number.nextLine() переменной в ваших условиях!

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

Сохраните введенные пользователем данные в переменную. В моем примере я создал переменную с именем String userInput = number.nextLine();

Затем выполните проверку этой переменной.

Пример 1:

public static void main(String[] args) {

    Scanner number = new Scanner(System.in);
    System.out.print("Enter something : ");
    String userInput = number.nextLine();

    if (userInput.startsWith("J") && userInput.length() > 3) {

        System.out.println("Your name is over 3 letters and starts with the letter J!");

    } else if (userInput.length() < 3) {
        System.out.println("Your name is too short!");

    } else if (userInput.length() > 10) {
        System.out.println("Your name is too long!");


    }

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