[英]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.