hasNextInt не вернет false и не выйдет из цикла - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь поместить пользовательский ввод в массив, но метод hasNextInt () не вернет false и не остановит ввод.

public static void main (String[] args) {

  Scanner in = new Scanner(System.in);

  int target = in.nextInt();
  while(in.hasNextInt()) {
     weights.insert(in.nextInt());
  }
  recKnapSack(target, 0);
}   

1 Ответ

0 голосов
/ 05 октября 2018

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()) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...