This question already has answers here:
What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it?
                                
                                    (25个答案)
                                
                        
                3年前关闭。
            
        

import java.util.Arrays;

public class Lab12st {
    public static void main(String args[]) {
        System.out.println("/nLab 12 80 Point Version \n");
        final int MAX = 100;
        boolean primes[];
        primes = new boolean[MAX];
        computePrimes(primes);
        displayPrimes(primes);
    }

    public static void computePrimes(boolean listA[]) {
        Arrays.fill(listA, true);

        for (int j = 2; j < 100; j++) {
            for (int k = 0; k <= 100; k += j) {
                listA[k] = false;
                System.out.println(listA[k + 1]);
            }
        }
    }
}


我尝试使用不同的关系运算符,切换一些数字,但仍然出现IndexOutofBounds错误。我认为这是因为我有100个列在0-99的数组元素,但是我不知道如何解决这个问题。任何帮助将不胜感激。

最佳答案

在您的内循环中,情况导致了问题

 for (int k = 0; k <= 100; k += j)


在每次迭代中,索引k递增等于j的值

由于数组大小在某些时候为100,因此您将获得index-out-of-bounds错误。

我的问题是为什么要执行这样的增量?您的代码实际上在做什么?

除此之外,您还应注意这一行代码并相应地调整for循环的条件

System.out.println(listA[k + 1]);

09-16 17:30