【发布时间】:2014-04-28 18:50:15
【问题描述】:
我正在编写一个在字符串中生成一些唯一整数的代码,但我突然遇到了一个异常,我不太明白这里有什么问题,因为我快完成了。现在发生了什么我不知道。
这是我的代码:
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)
【问题讨论】:
-
数组是从零开始的。您正在访问第 13 个元素。寻找其中的众多副本之一。
-
这段代码有很多错误,除了数组的声明,我什至找不到好的代码行......
-
@MatejSpili 说了什么。一方面,您应该不像这样创建新的
Random()对象。您最终会多次获得完全相同的数字。在循环开始时创建一个,并为那里的所有内容使用相同的。
标签: java arrays exception random int