2016-04-03 3 views
-1

В первый раз отображается меню(), я могу вводить ввод и работать runGame(). Во второй раз, когда отображается меню, программа сбой на строке int answer = scanner.nextInt() с java.util.NoSuchElementException. Кажется, что нет «nextInt» для чтения, но у меня нет возможности войти в него во второй раз.Scanner throwing NoSuchElementException во второй раз .nextInt();

public void runGame(){ 
    int userPick = 0; 
    userPick = menu(); 
    while (userPick != 10){ //user exists with a choice of 10 
     switch (userPick){ 
      case 1: 
       System.out.println("User picked 1"); 
       break; 
      case 2: 
       ... 
      default: 
       ... 
     } 
     userPick = menu(); 
} 

public int menu(){ 
    Scanner scanner = new Scanner(System.in); 
    System.out.println("Please choose an integer from 0 - 10(quit)"); 
    int answer = scanner.nextInt(); 
    scanner.close(); 
    return answer; 
} 
+0

Почему вы открываете и закрываете «Сканер» внутри цикла? Разве это не кажется излишним? –

+0

Вот как мы научились использовать Scanners @DebosmitRay. Есть ли способ лучше? –

ответ

1

Пер, Scanner throws NoSuchElementException on nextInt

При вызове scanner.close() закрывает свой основной поток, который System.in; как только вы закроете System.in, единственный способ вернуть его - перезапустить вашу программу.

Удаление проблемы позаботилось о проблеме.

Смежные вопросы