цикл while с hasNextInt() завершается, но программа после него ничего не делает

#java #java.util.scanner

#java — язык #java.util.scanner #java

Вопрос:

Итак, у меня есть эта программа здесь:

 ArrayList<Integer> meh = new ArrayList<Integer>();
Scanner sc = new Scanner(System.in);
System.out.print("Input 3 numbers: ");

while (sc.hasNextInt()) {
    meh.add(sc.nextInt());
    System.out.println("meeeeeep");
}

System.out.println("Goodbye");
  

Вывод (если введены 3 целых числа):

 meeeeeep
meeeeeep
meeeeeep
  

Он не печатает прощальное сообщение и не делает ничего, что я помещаю после него.

Ответ №1:

Это потому, что сканер ожидает поступления входных данных. sc.hasNextInt() ожидает следующего токена и определяет, является ли он int.

Чтобы решить эту проблему, попробуйте читать по строкам и разбивать на " " с помощью String.split();

Другим решением может быть выполнение этого в цикле for:

 for (int i = 0; i < 3;   i) {
    meh.add(sc.nextInt());
    System.out.println("meeeeeep");
}
  

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

1. Цикл while не нужен, если вы знаете, сколько целых чисел ожидать. Решение цикла for намного лучше.

2. Другим решением было бы чтение из файла или передача входных данных.