実現したいこと
解決したいこと
下記プログラムの内容で
Scanner scan = new Scanner(System.in); を一つだけインスタンス化して使用すると
エラーが発生します。
Scanner scan = new Scanner(System.in);
Scanner scan2 = new Scanner(System.in);
Scanner scan3 = new Scanner(System.in);
上記のようにHero,Majician,Monsterそれぞれにインスタンス化して使用するとエラーは発生
しませんでした。
Scannerが一つの場合なぜこのようなエラーが発生するのかがわかりません。
なぜこのようなエラーが発生するのか、またはSccannerを一つだけインスタンス化して実行
するにはどうしたらいいのか。
ご教授お願いいたします。
発生している問題・エラーメッセージ
勇者の「名前」「体力」「攻撃力」「防御力」を入力 test 1 1 1 モンスターの「名前」「体力」「攻撃力」「防御力」を入力 test2 ←ここでエラーが発生します Exception in thread "main" java.util.InputMismatchException at java.base/java.util.Scanner.throwFor(Scanner.java:939) at java.base/java.util.Scanner.next(Scanner.java:1594) at java.base/java.util.Scanner.nextInt(Scanner.java:2258) at java.base/java.util.Scanner.nextInt(Scanner.java:2212) at Story.input(Story.java:41) at Story.main(Story.java:18)
該当のソースコード
java
1import java.util.Scanner; 2 3public class Story { 4 5 public static void main(String[] args) { 6 7 //標準入力 8 Scanner scan = new Scanner(System.in); 9 10 //ヒーロー 11 Here h = new Here(); 12 input(h,scan); 13 14 //モンスター 15 Monster m = new Monster(); 16 input(m,scan); 17 18 //マジシャン 19 Magician ma = new Magician(); 20 input(ma,scan); 21 } 22 23 public static void input(Here h,Scanner scan) { 24 System.out.println("勇者の「名前」「体力」「攻撃力」「防御力」を入力"); 25 h.setName(scan.nextLine()); 26 h.setHp(scan.nextInt()); 27 h.setAt(scan.nextInt()); 28 h.setDf(scan.nextInt()); 29 } 30 31 public static void input(Monster m,Scanner scan) { 32 System.out.println("モンスターの「名前」「体力」「攻撃力」「防御力」を入力"); 33 m.setName(scan.nextLine()); 34 m.setHp(scan.nextInt()); 35 m.setAt(scan.nextInt()); 36 m.setDf(scan.nextInt()); 37 } 38 39 public static void input(Magician ma,Scanner scan) { 40 System.out.println("魔法使いの「名前」「体力」「MP」を入力"); 41 ma.setName(scan.nextLine()); 42 ma.setHp(scan.nextInt()); 43 ma.setMp(scan.nextInt()); 44 } 45}
試したこと
Scanner scan = new Scanner(System.in);
Scanner scan2 = new Scanner(System.in);
Scanner scan3 = new Scanner(System.in);
とした場合はエラーなく実行されました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。