用户必须提供他们想要插入的行的索引,如下所示:
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();
}
我一直有错误,老实说我不知道如何修复它。我将不胜感激。
答案 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]]