显示结果时数组是否跳过空位置?

时间:2018-09-05 19:45:31

标签: java arrays multidimensional-array

我试图创建像这样的弗洛伊德三角形。

1
2 3
4 5 6
7 8 9 10

但是在练习时,我使用此代码输入错误并创建了另一个三角形,

class Main {
    public static void main(String[] args) {
        int value=1;
        int[][] arr = new int[4][4];
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++) {

                if( i<=j ){
                    System.out.print(value+" ");
                    value++;
                }
            }System.out.println();
        }

    }
}

并打印了此内容,

1 2 3 4                                                                                                                                        
5 6 7                                                                                                                                          
8 9                                                                                                                                            
10

现在我的问题是,在阅读数组时,我读到特定位置的特定值会被打印出来。

因此,如果这是真的,那么此代码的输出应类似于

[1][2][3][4]
[x][5][6][7]
[x][x][8][9]
[x][x][x][10]

数组在显示结果时是否跳过这些空字段? 请帮助了解这一点

4 个答案:

答案 0 :(得分:0)

不,这些值不会被数组跳过。

它们被跳过是因为您编写了如下代码来跳过它们:

      if( i<=j ){
          System.out.print(value+" ");
          value++;
      }

如果删除条件,将打印所有16个值。

答案 1 :(得分:0)

恐怕情况有误。应该是相反的:

            if( j <= i ){
                System.out.print(value+" ");
                value++;
            }

我想如果您停止使用人工的 i s和 j 并开始使用 row 列会更容易

但是,请注意,在Java中,您并不是在创建二维数组,而是创建一个数组数组,该数组可以在任意维度上任意大小。

PS。无论如何,您都不会在内部循环中使用数组。

答案 2 :(得分:0)

它将以0的形式打印0,因为初始化数组时,所有值都设置为零,如果您打印它们,它们将像这样打印。这是链接

What is the default initialization of an array in Java?

答案 3 :(得分:0)

不,正如另一个家伙所说,是if条件正在跳过。 试试这个程序-

public class MyClass {

    public static void main(String args[]) {
        int value=1;
        int[][] arr = new int[4][4];
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++) {

                if( i<=j ){
                    System.out.print(value+" ");
                    System.out.print("\t");
                    value++;
                } else {
                    System.out.print(0);
                    System.out.print("\t");
                }
            }System.out.println();
        }

    }
}

此打印-

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

注意-程序中没有使用arr。