当我运行下面的代码时,为什么会抛出此错误?
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;
}
}
答案 0 :(得分:1)
答案 1 :(得分:1)
最有可能的原因是Scanner需要一个整数值并找到其他东西。例外情况是您在控制台上实际输入的结果。
看起来你看到一个二进制数(10011
)并且必须输入十进制值(19
)