gpt4 book ai didi

java - 为什么我会收到 ArrayIndexOutOfBoundsException 错误?

转载 作者:行者123 更新时间:2023-12-01 18:35:05 26 4
gpt4 key购买 nike

您好,我已经构建了一个应用程序,它将接受用户输入,然后根据输入执行一些代码。一切正常,直到在 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 而不是 9Here'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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com