Я пытаюсь заставить пользователя писать предложение слово за словом и хранить каждое слово в массиве. Я использую цикл for, но сначала он печатает Write word 1 :, Write word 2 : (и т. д.), и только после этого я могу написать одну строку. В чем проблема?

static String[] readSentence(int wordNumber) {
        String[] sentence= new String [wordNumber];
        for (int i = 0; i < wordNumber; ++i) {
            System.out.print("Write word " + (i+1) + " : ");
            sentence[i] = input.nextLine();
            System.out.println();
        }
        return sentence;
    }

ОБНОВЛЕНИЕ: я инициализировал другой вход сканера в функции, и это сработало. Но почему private static Scanner input = new Scanner(System.in); не сработало (я поместил его в класс, но вне основной функции)?

-1
Maria 1 Окт 2022 в 19:45
Пожалуйста, уточните, что вы спрашиваете. Пожалуйста, объясните отношение цикла к вашему вопросу. Вы спрашиваете, почему статическое поле не работает, а поле класса работает?
 – 
Bohemian
1 Окт 2022 в 20:08

1 ответ

Вы печатаете "Write word..." внутри цикла for. Если вы хотите напечатать «Write word...» только один раз, переместите оператор print перед циклом for.

    System.out.print("Write sentence with " + wordNumber +" words:");       
    for (int i = 0; i < wordNumber; ++i) {
            sentence[i] = input.nextLine();
            System.out.println();
    }
0
Michael Katt 1 Окт 2022 в 20:02