我正在编写一个代码,在字符串中生成一些独特的整数,我突然遇到异常,我不知道这里有什么问题,因为我差不多完成了。现在发生了什么,我不知道。
这是我的代码:
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)
答案 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。