Java エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
2022-01-21 01:46:21
Java で記述する場合、Scanner オブジェクトは複数の関数で宣言され、最終的に close() 関数で閉じられます。
を定義した最初の関数を実行すると
スキャナ
オブジェクトを含む入力文に対して、2番目の関数が実行されると、次のようなエラーが発生します。
前のステートメントでいずれかの Scanner オブジェクトを閉じると、後のステートメントで Scanner を開くことができなくなります。たとえば、次のようなコードです。
import java.util.*; public class GuessGame { private int myGuess,robotGuess; public void Player(){ System.out.println("Please enter your punch (1 scissors,2 rock,3 cloth)"); Scanner input = new Scanner(System.in); myGuess = input.nextInt(); input.close(); } public void Robot(){ robotGuess = (int)(Math.random()*3)+1;// return a random number, random number range is 0.0 =< Math.random < 1.0 switch(robotGuess){ case 1:System.out.println("Machine punches: scissors"); break; case 2:System.out.println("machine punches: rock"); break; case 3:System.out.println("Machine punches: cloth"); break; } } public void Star(){ String chose; do{ Player(); Robot(); int complete = myGuess - robotGuess; switch(complete){ case -2:System.out.println("Victory \n can the brother"); case 0:System.out.println("tie \n brother, I believe you can do it. "); break; case -1:System.out.println("Fail \n you're so bad "); break; case 2:System.out.println("Fail \n you're really bad"); break; case 1:System.out.println("Victory \n you can brother"); break; } System.out.println("Still playing, bro? (yes or no)"); Scanner string = new Scanner(System.in); chose = string.next(); string.close(); }while(chose.equals("yes")); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
最良の解決策は、静的な Scanner オブジェクトをグローバルに宣言し、Scanner が最後に必要とされる場所で close() 関数を使用して閉じることです。
import java.util.*; public class GuessGame { private int myGuess,robotGuess; private static Scanner input = new Scanner(System.in); public void Player(){ System.out.println("Please enter your punch (1 scissors,2 rock,3 cloth)"); myGuess = input.nextInt(); } public void Robot(){ robotGuess = (int)(Math.random()*3)+1;// return a random number, random number range 0.0 =< Math.random < 1.0 switch(robotGuess){ case 1:System.out.println("Machine punches: scissors"); break; case 2:System.out.println("machine punches: rock"); break; case 3:System.out.println("Machine punches: cloth"); break; } } public void Star(){ String chose; do{ Player(); Robot(); int complete = myGuess - robotGuess; switch(complete){ case -2:System.out.println("Victory \n can the brother"); case 0:System.out.println("tie \n brother, I believe you can do it. "); break; case -1:System.out.println("Fail \n you're so bad "); break; case 2:System.out.println("Fail \n you're really bad"); break; case 1:System.out.println("Victory \n you can brother"); break; } System.out.println("Still playing, bro? (yes or no)"); chose = input.next(); }while(chose.equals("yes")); input.close(); } public static void main(String args[]){ GuessGame open = new GuessGame(); open.Star(); } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
これで問題なく実行されます。
関連
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
Dateが型に解決できない問題を解決する
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
Eclipseプロンプトを実行する java仮想マシンを使用しない
-
org.glassfish.jersey.servlet.ServletContainer
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
ajaxでエクセルをアップロードする
-
エコー文字列を決定するためのjavaの簡単な実装をいくつか紹介します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
IllegalArgumentException この例外を解決する方法
-
SpringBootApplication を型解決できない。
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
linux run jarfile Invalid or corrupt jarfile error.
-
Javaエラーメッセージがenclosingクラスでない
-
Easyui Resource が Document と解釈され、MIME タイプが application/json で転送された場合について。
-
Java-Myeclipse エラー解決 構文エラー、TryStatem を完了するために "Finally" を挿入する。
-
JAVA のエラーです。公開型***は、独自のファイルで定義する必要があります***。