java对角2d数组拷贝
我正在尝试创建一个方法,以对角方式复制数组中的元素java对角2d数组拷贝,java,multidimensional-array,Java,Multidimensional Array,我正在尝试创建一个方法,以对角方式复制数组中的元素 {{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].len
{{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];
}
}
for(int i=0;i
但这似乎不起作用。有人能帮我解决代码的问题吗?谢谢。您没有指定它“不工作”的方式,但问题似乎是您只希望覆盖非零值的旧值 如果是这样的话,你所需要做的就是增加一张额外的支票。您在索引时也会遇到问题,因为您总是使用最后一列。您需要从右侧的索引中减去
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
编辑:如果你想做的只是将对角复制到主对角线上,那就简单多了
for(int i = 0; i < a.length; i++)
{
a[i][i] = a[a.length-1-i][i];
}
for(int i=0;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];
}
}
for(int i=0;i
要覆盖0吗?是的。。。只是试着复制对角线。把一个对角线元素复制到另一个对角线上,对吗?@vidit:没错,谢谢第二个。我不敢相信事情会这么简单。你应该解释一下你做了什么。