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

标签 java arrays indexoutofboundsexception

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

相关文章:

java - 设置 Spinner 的事件处理程序时出现 NullPointerException

arrays - 在 mongo 数组中查找平均天数

java - 如何将列与 java 2d 数组中的特定索引交换?

java - 数组索引越界帮助 (Java)

Javafx 使用 tableview 更新数据库

java - LambdaConversionException 与泛型 : JVM bug?

java - 如何使用 Jenkins 从 Nexus 获取 jar 文件?

c - 二维数组的问题

arrays - C++11 段错误试图动态地将数组(<algorithm>)复制到向量中

c++ - 迭代器边界检查超出 vector 大小