Scanner.hasNextInt()
вернет false, когда встретит в своем буфере нецелый символ.Тем не менее, он может удалить пробелы при чтении подсказок.Так что Space+Enter
или Enter
, скорее всего, не остановят цикл.Но любой другой персонаж будет.
Поскольку вы хотите ввести любое количество целых чисел, вы должны указать пользователю, что печатать после завершения.Фактически, если вы пишете консольное приложение, хорошей идеей будет всегда объяснять, ПОЧЕМУ программа ожидает ввода.
Любое нецелое число остановит условие цикла.В этом случае синтаксис будет работать как есть, пользователю просто нужна инструкция:
System.out.println("Please enter the target");
int target = in.nextInt();
System.out.println("Enter weights. Type 'X' to stop");
while(in.hasNextInt()) {