此错误使线程“ main”中不断发生异常java.lang.ArrayIndexOutOfBoundsException:131071
我正在尝试创建一个131071个整数的数组,并且没有重复。
public class array {
public static void main(String[] args) {
populateArray();
}
public static void populateArray(){
int [] numbers = new int [131071];
int k = 0;
Random r = new Random();
for (int i = 0; i < 131070 ; i++) {
int random=r.nextInt(13071)+1;
for (int h = 0; h <= i; h++) {
if (random != numbers[h]) {
numbers [k] = random;
k=k+1;
}
}
}
for (int j = 0; j < 131071; j++) {
Arrays.sort(numbers);
System.out.println(numbers[j]);
}
}
}
答案 0 :(得分:0)
该异常是由以下事实引起的:您有两个嵌套的for循环,并且您在 inner 循环中递增了k
,而从未对其进行过重置,因此它高于131071。
但是,即使您修复了该代码,该代码也不会执行您想要的操作。您需要退后一步,重新考虑如何特别地检测重复项。
此外,我建议不要在多个位置硬编码相同的整数值。那里有一个错字,使您的代码无法正常工作,如果将int分配给变量并在多个位置使用该变量,则可以避免这种错字。