Это работает, когда я объединяю 2-й массив с строками четной длины:
public static int[] concArr(int[][] arr){
int[] oneD = new int[arr.length * arr.length];
for(int i = 0; i < arr.length; i ++)
{
for(int j = 0; j < arr.length; j ++)
{
oneD[(i * arr.length) + j] = arr[i][j];
}
}
return oneD;
}
Однако, если массив неравномерен, то есть:
{ {1, 2, 3},
{4},
null,
{},
{5,6}};
то код не будет работать. Как мне это сделать?
1. for(int j = 0; j < arr[i].length; j ++)
Обратите внимание на arr[i].length
вместо arr.length
, вы должны учитывать текущую длину строки, так как строки имеют неравную длину.
2. Вместо oneD[(i * arr.length) + j]
использовать переменную, чтобы удерживать текущую позицию в массиве результатов; эта переменная инициализируется 0 и увеличивается во внутреннем цикле.
oneD
, чтобы вы знали, куда копироватьarr[i][j]
.