我有ArrayIndexOutOfBoundsExeption错误,有人可以帮我解决它吗

时间:2019-02-18 21:50:09

标签: java arrays

此错误使线程“ 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]);

        }
                }

        }

1 个答案:

答案 0 :(得分:0)

该异常是由以下事实引起的:您有两个嵌套的for循环,并且您在 inner 循环中递增了k,而从未对其进行过重置,因此它高于131071。

但是,即使您修复了该代码,该代码也不会执行您想要的操作。您需要退后一步,重新考虑如何特别地检测重复项。

此外,我建议不要在多个位置硬编码相同的整数值。那里有一个错字,使您的代码无法正常工作,如果将int分配给变量并在多个位置使用该变量,则可以避免这种错字。