2
我有一个数组[300] [300],我需要摆脱边缘并用其余值填充一个新数组[298] [298]。到目前为止,我有这么多:删除二维数组的边缘
double[][] edging() {
double [][] array = new double [data.length] [data[0].length];
array = bubbles();
double [] [] newArray = new double[array.length-2][array[0].length-2];
System.arraycopy(array,1,newArray, 0, newArray.length);
array = newArray;
System.out.println(+ newArray.length);
System.out.println(+ newArray[0].length);
return newArray;
}
这可以消除顶部和底部边缘。但是,左右仍然存在。在那里的检查显示新的数组是[298] [300]。
我想过编写一个循环来依次删除每一行,对每一行使用arraycopy并返回新行。不知道这是否会非常有效。 试过这个,但无济于事。下一个测试就是旋转它并再次使用上面的代码。
在此先感谢您的任何建议。
由于Bragboy。我一定会试试这个。比我刚刚想到的更优雅。我使用arraycopy去除顶部和底部边缘,旋转90度,重复arraycopy然后旋转它。笨拙而可怕的,我很惊讶,甚至工作。 –
@Oliver Burdekin:虽然它运作良好,但Arraycopy在运行时间方面是一种代价高昂的方法。请尽量避免它。 – bragboy
只是测试和确认。你是一个天才。再次感谢Bragboy! –