您好我已经构建了一个将用户输入的应用程序,然后根据输入执行一些代码。一切正常,直到在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 :(得分:4)
表示数字的字符的数值不是该数字。具体来说,字符'0'
的值为48
而不是0
,'1'
的格式为49
而非1
,依此类推'9'
} 57
而不是9
。 Here's the ASCII table for reference
您需要通过从char
值中减去p
,将48
值从char
转换为数字。您不必记住'0'
是48
,只是数字char
值是有序的。这意味着您只需减去'0'
。
以下是您需要改变的一个例子;您可以针对其他案例进行其他类似的更改。
case '0':
kc[i] = K0[ p[i] - '0' ]; k[0]++;
break;