猿问

为什么我的一些 Java 代码被忽略了?

我的代码示例:


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) 之后的代码被忽略了,我不知道为什么。


白衣非少年
浏览 148回答 1
1回答

慕码人8056858

错误您对语句的最后一个逻辑错误。你是说:if&nbsp;(numbers[x]+1&nbsp;!=&nbsp;numbers[x+1]&nbsp;)数字长度为 131071。通过说 numbers[x+1] 意味着它将尝试比较 131071+1 = 131072 的位置超出范围。你看到错误了吗?您在开始时说过您想要一个包含 131071 个位置的数组,并且您尝试比较第 131072 个不存在的东西。小费您还必须替换这个:System.out.println(numbers[element]);有了这个:System.out.println(element);这就是你使用这种 for 语句的原因。否则,您需要使用经典/默认的。解决方案您的 if 语句中缺少 a&nbsp;+1。插入它,它将被固定。
随时随地看视频慕课网APP

相关分类

Java
我要回答