Как объединить неравномерный 2-мерный массив в 1-й массив (Java)

1

Это работает, когда я объединяю 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}};

то код не будет работать. Как мне это сделать?

Теги:
arrays
multidimensional-array

1 ответ

0

1. for(int j = 0; j < arr[i].length; j ++)

Обратите внимание на arr[i].length вместо arr.length, вы должны учитывать текущую длину строки, так как строки имеют неравную длину.

2. Вместо oneD[(i * arr.length) + j] использовать переменную, чтобы удерживать текущую позицию в массиве результатов; эта переменная инициализируется 0 и увеличивается во внутреннем цикле.

  • 0
    # 1 имеет смысл, я должен был подумать об этом. Не могли бы вы объяснить # 2 более подробно - что вы имеете в виду, говоря о текущей позиции? Вы имеете в виду создание temp = arr [i] [j]? (извините, я новичок)
  • 0
    Нет, нет необходимости во временном. Вам нужна переменная для хранения текущего индекса в массиве oneD , чтобы вы знали, куда копировать arr[i][j] .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню