创建将2d数组转换为1D数组的函数
但是在宣言时,1D数组的大小如何给新的1D数组赋予大小
int[] convert(int[][] input){
int[] result;
int z=0;
for(int row=0;row<input.length;row++) {
for(int col=0;col<input[row].length;col++) {
result[z]=input[row][col];
z++;
}
}
return result;/* Error comes here For Initialization. How to initialize before Knowing size*/
}
答案 0 :(得分:4)
如果行和列是平衡的
int result[] = new int[input.length * input[0].length];
否则,你必须循环遍历整个数组,同时保持长度计数
int len = 0;
for(int[] a : input){
len+=a.length;
}
int[] result = new int[len];
答案 1 :(得分:1)
你可以这样简单地计算尺寸(即行的数量 * 列的数量):
int[] result = new int[input.length * input[0].length] ;
答案 2 :(得分:0)
1)如果是矩形二维数组,请以这种方式计算大小
int array[] = new int[input.length * input[0].length];
2)如果它不是矩形,则遍历每一行并添加每个子阵列的长度
int size = 0;
for(int i=0;i<input.length;i++){
size += input[i].length;
}
答案 3 :(得分:0)
或者您可以只使用不必要的流来自己处理大小:
int[] convert(int[][] input){
return Stream.of(input).flatMapToInt(x -> Arrays.stream(x)).toArray();
}