scanner.nextInt() возвращает java.util.NoSuchElementException

#java.util.scanner

#java.util.scanner

Вопрос:

Это мой код, который должен принимать входные данные от пользователя и устанавливать 2 значения int. Функция exit работает корректно, однако, когда входная строка равна, например, «5 2», она устанавливает x равным 5 и выдает исключение java.util.NoSuchElementException в строке y = s2.nextInt(); , даже если существует next int. В примере nextInt () я видел, что целые числа были разделены пробелом, и сканер все равно распознал все целые числа. У меня чего-то не хватает?

 String exit = "-1";
Scanner s1 = new Scanner(System.in);
String input = s1.next();
Scanner s2 = new Scanner(input);
if (input.equals(exit))
    Sequence.quit();
else {  
    x = s2.nextInt();
    y = s2.nextInt();
}
  

Ответ №1:

Если вы распечатаете свою переменную ìnput , вы увидите, что она содержит только «5» — поскольку s1.next() она будет заканчиваться пробелом.

Что-то вроде этого:

 String exit = "-1";
Scanner s1 = new Scanner(System.in);
int x  = s1.nextInt();
if (x==-1) 
    Sequence.quit();
else {  
    y = s1.nextInt();
}
  

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

1. Я понимаю. Я прокрутил класс Scanner и обнаружил, что изменение input = s2.next(); на input = s2.nextLine(); решило проблему