簡體   English   中英

java對角二維數組副本

[英]java Diagonal 2d array copy

我試圖做一個對角復制數組中的元素的方法。

{{0,0,0,0,9},
 {0,0,0,8,0},
 {0,0,7,0,0},
 {0,6,0,0,0}, 
 {5,0,0,0,0}}

變成

{{9,0,0,0,9},
 {0,8,0,8,0},
 {0,0,7,0,0},
 {0,6,0,6,0},
 {5,0,0,0,5}}

我試過了:

for(int i = 0; i < a.length; i++) {
    for(int j = 0; j < a[i].length; j++) {
        a[i][j] = a[a.length-1][j];
    }
}

但這似乎不起作用。 誰能幫助我解決我的代碼有什么問題? 謝謝。

您沒有指定它如何“不起作用”,但是看起來問題是您只希望將舊值覆蓋為非零值。

如果是這樣,您要做的就是添加額外的檢查。 您也總是在索引最后一個列的地方遇到問題。 您需要從右側的索引中減去i

for(int i = 0; i < a.length; i++)
{
    for(int j = 0; j < a[i].length; j++)
    {
        int temp = a[a.length-i-1][j];
        if (temp != 0) {a[i][j] = a[a.length-i-1][j];}
    }
}

編輯:如果您要做的只是將對角線復制到主對角線上,則更加簡單。

for(int i = 0; i < a.length; i++)
{
    a[i][i] = a[a.length-1-i][i];
}

嘗試這個

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

暫無
暫無

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

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