按素数创建布尔数组

时间:2016-07-09 11:10:44

标签: java algorithm

我需要创建一个N-by-N布尔数组a[][],如果a[i][j]i是相对素数,则j为真否则。

我的代码是

public static void main(String[] args){
    int N = 12;
    boolean[][] a = new boolean[N][N];

    for(int i = 0; i < a.length; i++){
        for(int j = 0; j < a[i].length; j++){
            if(i%j == 0){
                a[i][j] = false;
            }else{
                a[i][j] = true;
            }
        }
    }

    printArray(a);
}


public static void printArray(boolean[][] a){
    for(int i=0; i<a.length; i++){
        for(int j=0; j< a[i].length; j++){
            System.out.printf(a[i][j]);
            System.out.printf("\n");
        }
    }
}

线程“main”

中的运行异常为Exception
java.lang.ArithmeticException: / by zero
        at Array.main(Array.java:8)

我该如何修复我的代码?

1 个答案:

答案 0 :(得分:2)

for(int i = 0; i < a.length; i++){
        for(int j = 0; j < a[i].length; j++){
            if(i%j == 0)

i为0且/或j为0时,您将除以0(i%j)。 你不能这样做。

试着考虑一下。也许从1而不是0运行ij,然后更正它?