您好,我已经构建了一个应用程序,它将接受用户输入,然后根据输入执行一些代码。一切正常,直到在 switch case 中执行的代码行,我得到 ArrayIndexOutOfBoundsException: length=10; index=53
它应该经过循环 6 次来构建一个字符数组,然后将其放入 kc
任何人都可以帮忙吗?
代码:
char[] k = input.toCharArray();
char[] p = { '5', '6', '7', '8', '9', '1', '2', '3', '4', '5'};
char[] kc = { '0', '0', '0', '0', '0', '0'};
int i = 0;
for (i = 0; i<6; i++) {
switch (k[0]) {
case '0':
kc[i] = K0[p[i]]; k[0]++;
break;
case '1':
kc[i] = K1[p[i]]; k[0]++;
break;
case '2':
kc[i] = K2[p[i]]; k[0]++;
break;
case '3':
kc[i] = K3[p[i]]; k[0]++;
break;
case '4':
kc[i] = K4[p[i]]; k[0]++;
break;
case '5':
kc[i] = K5[p[i]]; k[0]++;
break;
case '6':
kc[i] = K6[p[i]]; k[0]++;
break;
case '7':
kc[i] = K7[p[i]]; k[0]++;
break;
case '8':
kc[i] = K8[p[i]]; k[0]++;
break;
case '9':
kc[i] = K9[p[i]]; k[0]++;
break;
};
if (k[0] == 10) {
k[0] = 0;
};
}
最佳答案
表示数字的字符的数值不是该数字。具体来说,字符 '0'
的值为 48
而不是 0
,'1'
的值为 49
不是 1
,依此类推,'9'
是 57
而不是 9
。 Here's the ASCII table for reference .
您需要将 char
值从 p
转换为数字,方法是从 char
中减去 48
值(value)观。您不必记住 '0'
是 48
,只需记住数字 char
值是按顺序排列的即可。这意味着您只需减去'0'
即可。
这是您需要更改的示例;您可以对其他情况进行类似的更改。
case '0':
kc[i] = K0[ p[i] - '0' ]; k[0]++;
break;
关于java - 为什么我会收到 ArrayIndexOutOfBoundsException 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22357982/