2011-09-14 12 views
1

以下のコードを実行すると、なぜこのエラーがスローされますか?配列の例外について

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Scanner.java:840) 
    at java.util.Scanner.next(Scanner.java:1461) 
    at java.util.Scanner.nextInt(Scanner.java:2091) 
    at java.util.Scanner.nextInt(Scanner.java:2050) 
    at GuessNumber.main(GuessNumber.java:35) 

これは私のコードです、ありがとう:

public class GuessNumber { 
    public static void main(String[] args) { 
     int[][] num = new int[5][16]; 
     int[] len = new int[5]; 
     char[] bit; 
     for (int i = 1; i <= 32; i++) { 
      bit = ToBinary(i); 
      //bit的大小为5:把二进制数存储到数组中num 
      for (int j = 0; j < bit.length; j++) { 
       if (bit[j] == '1') { 
        //11000 
        num[j][len[j]++] = i; 
       } 
      } 
     } 

     Random r = new Random((new Date()).getTime()); 
     int numRoad = r.nextInt(31); 
     bit = ToBinary(numRoad); 
     String cardRand = ""; 
     for (int i = 0; i < bit.length; i++) { 
      if (bit[i] == '1') { 
       cardRand = cardRand + (i + 1) + ","; 
      } 
     } 
     System.out.println("在卡片" + cardRand + "上的数字是:"); 
     System.out.println("请玩家输入猜测数字:"); 
     Scanner c = new Scanner(System.in); 
     int number = c.nextInt(); 
     if (number == numRoad) { 
      System.out.println("恭喜您,猜对了."); 
     } else { 
      System.out.println("对不起!猜错了,该数应该为:" + numRoad); 
     } 

    } 

    /** 
    * 将十进制数转成二进制数 
    * 
    * @param i 
    * @return 
    */ 
    public static char[] ToBinary(int c) { 

     char[] bit = new char[5]; 
     String a = Integer.toBinaryString(c); 
     bit = a.toCharArray(); 
     char temp; 
     for (int i = 0; i < bit.length/2; i++) { 
      temp = bit[i]; 
      bit[i] = bit[bit.length - 1 - i]; 
      bit[bit.length - 1 - i] = bit[i]; 
     } 
     return bit; 
    } 
} 

答えて

1

おそらく、スキャナが整数値を期待し、何か他のものを見つけたためです。例外はコンソールでの実際の入力の結果です。


あなたが進数(10011)を参照し、小数点以下の値(19)を入力する必要がように見える

1

Javadoc救助に:

例外: InputMismatchExceptionを - 次のトークンが Integer正規表現に一致しない場合、または範囲外です。

プログラムによって要求された有効な整数を入力していない可能性があります。

関連する問題