在java中减少多维数组

时间:2014-01-10 04:10:16

标签: java arrays multidimensional-array

我无法理解如何从多维数组的底部到顶部启动数组的第一个索引。这是我尝试从下到上初始化我的数组(以2d数组表格式):

  for(int row = arrayName.length - 1; row > 0; row--) {
     for(int col = 0; col < arrayName.length; col++) {
        arrayName[row][col] = ' ';
     }
  }      

for(int row = arrayName.length - 1; row > 0; row--) {
  for(int col = arrayName.length - 1; col < 0; col--) {
     arrayName[row][col] = ' ';
  }
}      

我的意思是......当我运行程序时,数组总是从上到下存储我的值,与我想要的相反。请帮忙!提前谢谢。

2 个答案:

答案 0 :(得分:1)

矩阵和阵列并没有任何固有的方向感。它们的方向完全取决于您选择显示信息的顺序。根据循环结构的不同,数组的内容将以不同的方式输出。如果要将元素从“底部”存储到“顶部”,那实际上意味着打印输出循环应该与分配循环的方向相反。所以例如(假设一个NxN数组),

for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr.length; j++) {
        arr[i][j] = <some value here>;
    }
}

为了简单起见,你会想到顶点(0,0)位于左上角,当你向右移动时,列会增加,而当你向下移动时,行会增加。然后从下往上打印,您需要从最后一行开始并移动到第一行。

for (int i = arr.length - 1; i >= 0; i--) { // Note the >= 0, which was incorrect
                                            // in the code you posted
    for (int j = 0; j < arr.length; j++) {
        System.out.print(arr[i][j]+" ");
    }
    System.out.println();
}

这将从底行开始,从第一列到最后一列打印出来,然后向上移动到倒数第二行等,一直到第一行(顶行)。因此,阵列中根本没有固有的方向性,但由于我们的打印方式与值赋值中使用的顺序相反,因此这些值似乎是从“自下而上”打印出来的。如果你想反转列,先打印最后一列,你可以这样做:

for (int i = arr.length - 1; i >= 0; i--) {
    for (int j = arr.length - 1; j >= 0; j--) {
        System.out.print(arr[i][j]+" ");
    }
    System.out.println();
}

我希望解释清楚。祝你好运〜!

PS。由于数组中没有固有的方向性,因此您不一定要将值存储在要打印它们的方向上。您应该以对您最有意义的方式存储值,并使其易于管理。然后,无论何时需要打印值,您都可以随意打印它们。

答案 1 :(得分:0)

试试这段代码,但我看到你用空格填充数组,你怎么能意识到 您的代码无法正常运行,请尝试填写数字来测试您的代码。

for(int row = arrayName.length -1; row >= 0; row--){
    for(int col = arrayName.length - 1; row >= 0; col--){
       arrayName[row][col] = col;
    }
}