对于方阵,列的2D阵列向上或向下移动

时间:2015-10-23 11:48:33

标签: java arrays data-structures

我知道如何移动double类型的2d数组的行 其中i是矩阵大小

public static void rowshiftRight(int i, double[][] array) {
        int m = array[i].length;
        double temp = array[i][m-1];
        for (int k=m-1; k>=1; k--){
            array[i][k] = array[i][k-1];
        }
        array[i][0] = temp;
    }

我试图将上述逻辑改为shiftcolum,任何帮助都会感激不尽

//wrong code
public static void colshiftdownorup(int i, double[][] array) {
        int m = array.length;
        double temp = array[m-1][i];
        for (int k=m-1; k>=1; k--){
            array[k][i] = array[k-1][i];
        }
        array[i][0] = temp;
    }

2 个答案:

答案 0 :(得分:1)

基本上,要移动列,您需要进行一些额外的检查,因为2D数组并不总是完美的矩阵,例如:

int[][] array = new int[4][];可能就像这样

2 3 4 5
1 1 1    
1 2    
1 2 3 4

如果要移动第3列(4,1,null,3),您将看到控制空值所需的额外工作。

答案 1 :(得分:1)

错误似乎位于colshiftRight

的最后一行

更改:

array[i][0] = temp;

到:

array[0][i] = temp;

您可能还想将方法重命名为colshiftDown