Java 展平锯齿状二维阵列
我有一个任务,要求我将二维数组展平为单个数组 以下是我目前掌握的情况:Java 展平锯齿状二维阵列,java,Java,我有一个任务,要求我将二维数组展平为单个数组 以下是我目前掌握的情况: public static int[] flatenArray(int [][] a){ //TODO int length = 0; for(int y = 0; y < a.length; y++){ length += a[y].length; } int[] neu = new int[length]; int x = 0; for
public static int[] flatenArray(int [][] a){
//TODO
int length = 0;
for(int y = 0; y < a.length; y++){
length += a[y].length;
}
int[] neu = new int[length];
int x = 0;
for (int i = 0; i < a.length; i++){
for(int j = 0; j < a[0].length; j++){
neu[x] = a[i][j];
x++;
}
}
return neu;
}
我得到以下错误:
数组在元素[9]处不同;预料之中,但事实并非如此
不知何故,当第三个“内部数组”的数组长度超过3时,最后2个数字(“10,11”)不会被复制到新数组中。有多种方法可以解决这个问题,但归根结底都是你计算错误
在
新int[1]
中,第一个元素是索引0。在由1个元素组成的数组中,.length
将返回1
,但不会有数组[1]
。这就是为什么您缺少1的计数。a[0]。长度
-->a[i]。长度
。投票结束是一个输入错误。@dasblinkenlight谢谢伙计!这就解决了:)一定是错过了!
assertArrayEquals(new int[] {1,2,3,4,5,6,7,8,9,10,11},Ass06.flatenArray(new int[][] {{1,2,3},{4,5,6},{7,8,9,10,11}}));