有人可以这么让我知道为什么在执行以下代码行时,为什么javac会打印带有零的多余行吗?我特意在第一行中打印了可能的行数,该数量正好等于非零行的数量。有什么建议吗?
码:

int[] fa = new int[15];
    int[][] sa = new int[100][3];
    int a=0, b=0;

    for(int i=0; i<15; i++){
        fa[i] = i+1;
    }


    for(int i=0; i<fa.length; i++){
        for(int j=i+1; j<fa.length; j++){
            for(int k=j+1; k<fa.length; k++){
                if(fa[i]+fa[j]+fa[k]==15){
                    sa[a][0] = fa[i];
                    sa[a][1] = fa[j];
                    sa[a][2] = fa[k];
                    a++;
                }
            }
        }
    }
    System.out.println(a);
    for(int i=0; i<sa.length; i++){
        for(int j=0; j<3; j++){
            System.out.print(sa[i][j]+" ");
        }
        System.out.println();
    }


输出:


12
1 2 12
1 3 11
1 4 10
1 5 9
1 6 8
2 3 10
2 4 9
2 5 8
2 6 7
3 4 8
3 5 7
4 5 6
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

最佳答案

要打印,请在sa上进行迭代:

for(int i=0; i<sa.length; i++){


在开始时,您说它有100行(默认值为0):

int[][] sa = new int[100][3];


它显示了这100行,与使用for在第二个fa上执行的操作无关。

尝试:

for(int i=0; i<a; i++){
    for(int j=0; j<3; j++){
        System.out.print(sa[i][j]+" ");
    }
    System.out.println();
}

09-25 16:03