簡體   English   中英

減少Java中的多維數組

[英]Decrements a multidimensional array in java

我在理解如何從多維數組的底部到頂部開始數組的第一個索引時遇到麻煩。 這是我嘗試從底部到頂部初始化數組(以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] = ' ';
  }
}      

我的意思是..當我運行程序時,數組總是從上到下存儲我的值,這與我想要執行的操作相反。 請幫忙! 提前致謝。

矩陣和數組實際上並沒有任何固有的方向感。 它們的方向完全取決於您選擇顯示信息的順序。 根據構造循環的方式,數組的內容將以不同的方式輸出。 如果要存儲從“底部”到“頂部”的元素,這實際上意味着打印輸出循環的結構應與分配循環的方向相反。 因此,例如(假設一個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。 由於數組中沒有固有的方向性,因此不必一定要在要打印它們的方向上存儲值。 您應該以對您最有意義的方式和易於管理的方式存儲值。 然后,每當需要打印值時,都可以根據需要打印它們。

嘗試使用此代碼,但是我看到您正在用空白填充數組,如何才能意識到自己的代碼無法正常工作,請嘗試使用例如填充數字來測試代碼。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM