Не заходит в следующий цикл

Не получается зайти во второй цикл, подскажите пожалуйста, как решить эту проблему? Я добавил ещё 1 сканнер, но есть решение лучше?

public class Include {

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    List<Integer> input1 = new ArrayList<>();
    List<Integer> input2 = new ArrayList<>();

    System.out.println("Введите последоватtльность чисел ");

    while (sc.hasNextInt()) {
        input1.add(sc.nextInt());
    }

    System.out.println(input1);

    System.out.println(" введите вторую последовательность");
    
    while (sc.hasNextInt()){
        input2.add(sc.nextInt());
    }

}

}


Ответы (1 шт):

Автор решения: Nowhere Man

В данном коде ввод каждой последовательности ограничен любым токеном/элементом, "непохожим" на целое число -- тогда циклы while (sc.hasNextInt()) завершаются, так как не могут найти ближайшее целое.

Соответственно, первый цикл, наткнувшись на "не-число" завершается, но этот разграничитель остаётся непрочитанным в потоке ввода, и соответственно второй цикл также обнаруживает его и завершает работу. Поэтому, чтобы "зайти" во второй цикл, нужно просто считать этот разграничитель, например при помощи sc.next(); -- будет cчитана любая последовательность непробельных символов.

List<Integer> input1 = new ArrayList<>();
List<Integer> input2 = new ArrayList<>();

System.out.println("Введите последовательность чисел ");

while (sc.hasNextInt()) {
    input1.add(sc.nextInt());
}

System.out.println(input1);

sc.next(); // cчитать разделитель!

System.out.println(" введите вторую последовательность");

while (sc.hasNextInt()){
    input2.add(sc.nextInt());
}
System.out.println(input2);

Вывод:

Введите последовательность чисел 
1 2 3 Q
[1, 2, 3]
 введите вторую последовательность
4 5  6 Q
[4, 5, 6]
→ Ссылка