Не заходит в следующий цикл
Не получается зайти во второй цикл, подскажите пожалуйста, как решить эту проблему? Я добавил ещё 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 шт):
В данном коде ввод каждой последовательности ограничен любым токеном/элементом, "непохожим" на целое число -- тогда циклы 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]