Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java对角2d数组拷贝_Java_Multidimensional Array - Fatal编程技术网

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:没错,谢谢第二个。我不敢相信事情会这么简单。你应该解释一下你做了什么。