前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)java(Eclipse)でじゃんけんをするというシステムを作っています。
メインのクラス内で入力した文字を他のクラスでも同じ文字で処理できるような機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at chukan.main(chukan.java:14)
該当のソースコード
java(chukan.java)・・・1つ目のクラス
1import java.util.Random; 2import java.util.Scanner; 3 4public class chukan{ 5 public static void main(String[] args) { 6 Hand Me=new Hand(); 7 Hand You=new Hand(); 8 Judge judge=new Judge(Me,You); 9 Random rand=new Random(); 10 Scanner stdln=new Scanner(System.in); 11 12 judge.Start(); 13 while(true) { 14 int input =stdln.nextInt(); 15 You.KHand(input); 16 if(Me.hand()==Hand.RANSUU) { 17 return; 18 } 19 judge.ponsho(); 20 Me.RHand(rand); 21 judge.judge(); 22 judge.Results(); 23 } 24 } 25} 26 27(Hand.java)・・・・・・・・・・・・2つ目のくらす・・・・・・ 28import java.util.Random; 29 30public class Hand{ 31 public static final int ROCK=1; 32 public static final int SCISSORS=2; 33 public static final int PAPER=3; 34 public static final int RANSUU=-1; 35 private final int KEY_START=103; 36 private final int KEY_IN=99; 37 private final int KEY_CHANGE=112; 38 private int inkey; 39 private int hand; 40 41 public void RHand(Random random) { 42 this.hand=random.nextInt(3)+1; 43 } 44 public void KHand(int inkey) { 45 int key=LKey(inkey); 46 switch(key) { 47 case KEY_START: 48 this.hand=ROCK; 49 return; 50 case KEY_IN: 51 this.hand=SCISSORS; 52 return; 53 case KEY_CHANGE: 54 this.hand=PAPER; 55 return; 56 default: 57 this.hand=RANSUU; 58 return; 59 } 60 } 61 private int LKey(int key) { 62 if(key<KEY_IN) { 63 return key+32; 64 } 65 return key; 66 } 67 public String toString() { 68 switch(hand) { 69 case ROCK: 70 return "ぐー!"; 71 case PAPER: 72 return "ぱー!"; 73 case SCISSORS: 74 return "ちょき!"; 75 default: 76 return "KEYが違います!G=ぐー P=ぱー C=ちょき"; 77 } 78 } 79 public int hand() { 80 return hand; 81 } 82} 83 84(Judge.java)・・・・・・・・・3つ目のクラス・・・・・・ 85public class Judge{ 86 private enum Result{ 87 RESULT_WIN, 88 RESULT_LOSE, 89 RESULT_EVEN 90 } 91 private Hand myHand; 92 private Hand youHand; 93 private Result result; 94 95 public Judge(Hand youHand,Hand myHand) { 96 this.youHand=youHand; 97 this.myHand=myHand; 98 this.result=Result.RESULT_LOSE; 99 } 100 public void Start() { 101 System.out.println("じゃんけんスタート!"); 102 System.out.println("G:ぐー!,C:ちょき!,P:ぱー!,終了はそれ以外"); 103 System.out.println("G/C/Pのどれかを選んでEnterキーを押して下さい。"); 104 System.out.println("じゃーんけーん"); 105 } 106 public void ponsho() { 107 switch(result) { 108 case RESULT_WIN: 109 case RESULT_LOSE: 110 System.out.println("ぽん!"); 111 break; 112 case RESULT_EVEN: 113 System.out.println("しょ!"); 114 break; 115 } 116 } 117 public void Results(){ 118 System.out.println("あいては"+youHand.toString()+"→"); 119 System.out.println("わたしは"+myHand.toString()); 120 switch(result) { 121 case RESULT_WIN: 122 System.out.println("あなたの勝ちです。"); 123 System.out.println("じゃーんけーん!"); 124 break; 125 case RESULT_LOSE: 126 System.out.println("あなたの負けです。"); 127 System.out.println("じゃーんけーん!"); 128 break; 129 case RESULT_EVEN: 130 System.out.println("あいこで、"); 131 break; 132 } 133 } 134 public void judge() { 135 this.result=judgeRule(); 136 } 137 private Result judgeRule() { 138 if(youHand.hand()==myHand.hand()) { 139 return Result.RESULT_EVEN; 140 } 141 switch(youHand.hand()) { 142 case Hand.ROCK: 143 if(myHand.hand()==Hand.SCISSORS) { 144 return Result.RESULT_WIN; 145 } 146 break; 147 case Hand.SCISSORS: 148 if(myHand.hand()==Hand.PAPER) { 149 return Result.RESULT_WIN; 150 } 151 break; 152 case Hand.PAPER: 153 if(myHand.hand()==Hand.ROCK) { 154 return Result.RESULT_WIN; 155 } 156 break; 157 default: 158 break; 159 } 160 return Result.RESULT_LOSE; 161} 162}
試したこと
chukan.java(1つ目のクラス)のYou.KHand(input);をHand KHand=new KHand(input);に変えるなどして試してみました。
補足情報(FW/ツールのバージョンなど)
Version(4.8.0)