创建字符串时,Java Array索引超出范围

时间:2014-04-28 18:50:15

标签: java arrays exception random int

我正在编写一个代码,在字符串中生成一些独特的整数,我突然遇到异常,我不知道这里有什么问题,因为我差不多完成了。现在发生了什么,我不知道。

这是我的代码:

String[] res = new String[12];
        int[] ia = {1, 6, 9};
        int[] ai = {97, 79, 8};
        int[] a = new int[10];
        for(int i = 0; i < a.length; i++){
            a[i] = (ia[new Random().nextInt(3)] ^ (ai[new Random().nextInt(3)] * i));
            for(int j = 0; j < res.length; j++){
                if(a[i] >= j){
                    res[j * i] = "J:" + (a[i] * a[new Random().nextInt(10)]); //exception
                } else if(a[i] <= j){
                    res[j * i] = "J:" + (-(a[i] * a[new Random().nextInt(10)]));
                }
            }
        } 

以下是抛出的异常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 12
    at testy.main(unique.java:15)

2 个答案:

答案 0 :(得分:0)

查看i和j的最大值。您将看到res [j * i]将超出您为其分配的空间,因此超出范围异常

答案 1 :(得分:0)

在你的第一个中,从0到9(a.length = 10)。在第二个中,你从0到11(res.length = 12)。

j*i中的res[j * i]将超过res(12)的限制,其简单值为2和10。