2016-04-03 5 views
-1

初めてメニュー()が表示されたら、inputとrunGame()を入力できます。 2回目にメニューが表示されると、プログラムはjava.util.NoSuchElementExceptionでint answer = scanner.nextInt()行でクラッシュしています。読み込むためのnextIntはないようですが、2回目にそれを入力する機会はありません。ScannerがNoSuchElementExceptionをスローする.nextInt()の2回目。

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を閉じると、プログラムを再起動するしかありません。

閉じるを削除して問題を解決しました。

関連する問題