Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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/rust/4.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将二维数组的对角线写入一维数组_Java_Multidimensional Array - Fatal编程技术网

JAVA将二维数组的对角线写入一维数组

JAVA将二维数组的对角线写入一维数组,java,multidimensional-array,Java,Multidimensional Array,要将二维数组(n*n矩阵)的对角线写入一维数组 123 4 5 6 => 1 5 9 7 8 9为什么需要多个循环 for (int i = 0; i < two_d_array[0].length; i++) { diagonal_array[i]=two_d_array[i][i]; } for(inti=0;i和 M >代码>分别是行数和列数(每行)。 因此,对角线元素的数量永远不会大于min(numorrows,numorcolumns) 因此,您可以随时尝试:

要将二维数组(n*n矩阵)的对角线写入一维数组

123
4 5 6 => 1 5 9 

7 8 9
为什么需要多个循环

for (int i = 0; i < two_d_array[0].length; i++) {  
    diagonal_array[i]=two_d_array[i][i];
}
for(inti=0;i

对我来说似乎足够了。

如果矩阵的宽度和高度相同,这是一个解决方案:

public int[] getDiagonal(int[][] two_d_array){
int[] diagonal_array = new int[two_d_array.length];        
for (int i = 0; i < two_d_array.length; i++) {
    diagonal_array[i] = two_d_array[i][i];
} 
return diagonal_array;
public int[]getDiagonal(int[]two\u d\u数组){
int[]对角数组=新的int[two_d_数组.length];
for(int i=0;i< /代码> 这里,我认为主对角线元素是元素集合,其中<代码> N< /代码>和<代码> M >代码>分别是行数和列数(每行)。
因此,对角线元素的数量永远不会大于
min(numorrows,numorcolumns)

因此,您可以随时尝试:

public int[] getDiagonalFromArray(int[][] 2DArray){
    int[] diagonalArray = new int[Math.min(2DArray.length, 2DArray[0].length]);
    int k=0;
    for (int i = 0; i < 2DArray.length && k < diagonalArray.l length; ++i) {
          for (int j = 0; j < 2DArray[i].length && k < diagonalArray.l length; ++j) {
                if (i == j) {
                     diagonalArray[k++]=2DArray[i][j];
                }
          }
    }
    return diagonalArray;
}
public int[]getDiagonalFromArray(int[]2DArray){
int[]对角线数组=新int[Math.min(2DArray.length,2DArray[0].length]);
int k=0;
对于(int i=0;i<2DArray.length&&k
为了更好的测量,我们进行了一些边界检查

您的输入矩阵必须至少为矩形(正方形最有意义),否则,代码的行为将不可靠


这与@相同,但为了理解,我牺牲了性能和简洁性。

1维->1循环。不确定其他两个循环的用途。第一个循环不应循环到
two_d_数组[0].length
,而不是
two_d_array.length
。不确定为什么有三个循环?我建议只使用下面建议的解决方案之一。“如果矩阵具有相同的宽度和高度”-如果没有,则没有明确的对角线。