Почему это приводит к дополнительной пустой строке для моего вывода, если ввод не заканчивался цифрой в JAVA

#java #input #println

#java #ввод #println

Вопрос:

Привет, я студент, который изучает это, и мой учитель просит нас написать программу, которая могла бы получить правильный вывод. Запрос заключается в том, что ввод всегда будет начинаться с целого числа k, и после первого ввода будет следовать k строк String. это означает, что если k равно 4 и после ввода k, есть еще 4 строки ввода, и все эти входные данные являются строками. И в запросе указано, что мне нужно игнорировать первый k, искать только второй k и печатать k строк, введенных после второго k, в качестве выходных данных.

Что я пробовал, так это то, что я написал этот код blow

 public class CS220_A1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int firstInt = input.nextInt();
        String temp = new String();
        for (int i = 0; i < firstInt   1; i  ) {
            temp = input.nextLine();
        }
        int secondInt = input.nextInt();
        for(int j = 0; j < secondInt   1; j  ) {
            System.out.println(input.nextLine());
        }
    }
}
  

Входные данные, приведенные в качестве примера, являются

 4
bGTRYLEsJhStPVDMdmoxZle
ZYEDXeMaGotpjAtpcaJQnHyTDXNnhgYMOpIdMBvn
oTRJptFnaMRZNuapwqWYbXIEOothm
aLKzsZAIuyW
3
oi
oii
oiii
0
  

и выходные данные должны быть

 oi
oii
oiii
  

Мой код хорошо работает с этим образцом, однако, когда я провожу тест самостоятельно, я обнаружил, что если ввод не заканчивался целым числом (или, возможно, цифрой), результат будет другим.
если я разрешу ввод как

 0
3
asc
azxv
aabbb
  

На выходе будет только «asc» и «azxv», пока я не нажму кнопку ввода.
Но он не повернулся вправо, после того, как я нажму кнопку ввода, в результате появится пустая строка, которая приведет к неправильному выводу.

Не уверен, работает картинка или нет. Я решаю поместить вывод здесь, неверный вывод будет показан, как показано ниже

 asc
azxv
  

и после того, как я нажимаю кнопку ввода, она отображается как

 asc
azxv

aabbb
  

Там появляется пустая строка! И я много пытался это исправить, но у меня не получилось.
Я хочу знать, как я могу решить эту проблему, и я хочу знать, начинается ли моя идея с правильной стороны!
Большое спасибо!

это вывод

Комментарии:

1. for (int i = 0; i < firstInt 1; i ) неверно, как и другой цикл. Первая должна быть for (int i = 0; i < firstInt; i ) , и аналогично для второй.

2. @MarquisofLorne Я пробовал это, но после того, как я изменил его, он будет выводить только «asc» и «azxv», после вывода этих двух строк программа завершается, однако я хочу, чтобы выводом были все «asc azxv aabbb»…

3. Вам нужно вызывать nextLine() после каждого nextInt() вызова, чтобы использовать конец его строки.