Автоматически генерировать 2D-массив переменного размера из 1D-массивов - PullRequest
0 голосов
/ 12 ноября 2018

Я ищу несколько советов о том, как создать метод, который генерирует 2D-массив на основе двух параметров: целое число s, которое будет определять количество строк в 2D-массиве, и int x [], где будут различные 1D-массивы. длиной 20 заполнит каждую строку 2D-массива. Пока что это метод, который я придумал, но он заполняет каждую строку нулями, только одна строка заполняется входным массивом. Мне в основном нужно заполнить каждую строку автоматически сгенерированного 2D-массива кучей одномерных массивов одного размера. пожалуйста помоги. Спасибо !

public class c {
   public int [][] f;

   public int [][] a(int x[], int s){
    f = new int [s][20];
    for(int j = 0; j < x.length; j++) {
        f[s-1][j] = x[j];
    }
   return f;
 }

  public void d(){
    for (int i =0; i < f.length; i++) {
        for(int j = 0; j < f[i].length; j++) {
            System.out.print(f[i][j] + " ");
        }
    System.out.println(" ");
    }
  } 
}

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Это может быть достигнуто с помощью Stream API в Java

int[][] arrInt = { { 1, 2 }, { 3, 4, 5 } };
int result[] = Arrays.stream(arrInt).flatMapToInt(Arrays::stream).toArray();
System.out.println(Arrays.toString(result));
0 голосов
/ 12 ноября 2018

Я вижу, что все, что вам нужно сделать, это просто создать 2D-массив с заданным количеством строк и скопировать данный 1D-массив в каждую строку. Это довольно просто:

  • Создать новый 2D массив
  • Перебирать каждую строку и помещать в нее заданный массив

Пример:

public static int[][] createArray(int[] arr, int totalRows) {
    int[][] res = new int[totalRows][arr.length];

    for (int row = 0; row < totalRows; row++)
        System.arraycopy(arr, 0, res[row], 0, res[row].length);

    return res;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...