如何在java中的2D数组中插入行?

时间:2018-02-20 02:23:27

标签: java arrays

用户必须提供他们想要插入的行的索引,如下所示:

original:
2.546   3.664  2.455
1.489   4.458  3.333

insert an index row: 1
[4.222, 2.888, 7.111]

row inserted:
2.546   3.664  2.455
4.222   2.888  7.111
1.489   4.458  3.333

这是代码:

public double[] getTheDataForRow( int len )
{
    double [] num = new double [len];
    return num;

}

public double[][] insertRow( double[][] m, int r, double[] data){
    m = new double [data.length][3];
    for(int row = 0; row<m.length; row++){
    for(int col = 0; col<m[row].length;col++)
    if(m[row][col] == r){
    m[row][col] = data;
    }
    }
    return m;
}

public void result(double[][] s){
    for(int row=0; row<s.length; row++){
        for(int col=0; col<s[0].length; c++)
            out.printf( "%5.2f", s[row][col] );
        out.println();
    }
    out.println();
}

我一直有错误,老实说我不知道​​如何修复它。我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您正在m的第一行打乱输入数组insertRow。而是创建一个包含另一个元素的新数组。然后从输入中复制插入点之前的所有内容。然后插入新行。然后从输入中复制该行之后的所有内容(向后移一个当前索引)。而且,我会制作方法static。像,

public static double[][] insertRow(double[][] m, int r, double[] data) {
    double[][] out = new double[m.length + 1][];
    for (int i = 0; i < r; i++) {
        out[i] = m[i];
    }
    out[r] = data;
    for (int i = r + 1; i < out.length; i++) {
        out[i] = m[i - 1];
    }
    return out;
}

然后测试一下,

public static void main(String[] args) {
    double[][] arr = { { 2.546, 3.664, 2.455 }, { 1.489, 4.458, 3.333 } };
    System.out.println(Arrays.deepToString(arr));
    arr = insertRow(arr, 1, new double[] { 4.222, 2.888, 7.111 });
    System.out.println(Arrays.deepToString(arr));
}

我得到(正如预期的那样)

[[2.546, 3.664, 2.455], [1.489, 4.458, 3.333]]
[[2.546, 3.664, 2.455], [4.222, 2.888, 7.111], [1.489, 4.458, 3.333]]