我的代码示例:public class arrray_2{ public static void main(String[] args) { populateArray(); } public static void populateArray(){ int [] numbers = new int [131071]; HashSet<Integer> used = new HashSet<Integer>(); for (int i = 0; i < 131071; i++) { int num = (int)(Math.random() * 131072 ); while (used.contains(num)) { num = (int) (Math.random() * 131072 ); } used.add(num); numbers[i] = num;} Arrays.sort(numbers); for (int element : numbers) { System.out.println(numbers[element]); } for (int x = 0; x < numbers.length; x++) { if (numbers[x]+1 != numbers[x+1] ) { System.out.println("Missing Number is: "+numbers[x]); } } System.out.println("hi"); } }通过执行这个我想出了这个错误:java.lang.ArrayIndexOutOfBoundsException这是我正在使用的代码,出于某种原因, for (int : element) 之后的代码被忽略了,我不知道为什么。
1 回答

慕码人8056858
TA贡献1803条经验 获得超6个赞
错误
您对语句的最后一个逻辑错误。你是说:
if (numbers[x]+1 != numbers[x+1] )
数字长度为 131071。通过说 numbers[x+1] 意味着它将尝试比较 131071+1 = 131072 的位置超出范围。你看到错误了吗?您在开始时说过您想要一个包含 131071 个位置的数组,并且您尝试比较第 131072 个不存在的东西。
小费
您还必须替换这个:
System.out.println(numbers[element]);
有了这个:
System.out.println(element);
这就是你使用这种 for 语句的原因。否则,您需要使用经典/默认的。
解决方案
您的 if 语句中缺少 a +1
。插入它,它将被固定。
添加回答
举报
0/150
提交
取消