Как преобразовать три массива в матрицу (двумерный массив) в java - PullRequest
0 голосов
/ 02 мая 2020

Я собираюсь преобразовать три массива, как написано ниже, в матрицу (двумерный массив).

На самом деле я прилагаю много усилий, но не мог понять, как заполнить матрицу, вот мой код:

double[] a1 = {2.1, 2.2, 2.3, 2.4, 2.5};
double[] a2 = {3.1, 3.2, 3.3, 3.4, 3.5};
double[] a3 = {4.1, 4.2, 4.3, 4.4, 4.5};

for(int i=0; i< a1.length; i++)
    {
       double[][] X = new double[i][3];
       for(int j=0; j<3; j++)
       {
                X[i][j] = "How should I fill the X Matrix";
       }

     }

Я ожидал, что мой результат должен быть таким

        //       x1    x2     x3  
        X = { {  2.1,  3.1,  4.1 },
              {  2.2,  3.2,  4.2 },
              {  2.3,  3.3,  4.3 },
              {  2.4,  3.4,  4.4 },
              {  2.5,  3.5,  4.5 },
            }

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Вы можете поместить массивы ai в список и выполнить итерацию по нему, чтобы заполнить ваш 2d-массив x следующим образом:

    double[] a1 = {2.1, 2.2, 2.3, 2.4, 2.5};
    double[] a2 = {3.1, 3.2, 3.3, 3.4, 3.5};
    double[] a3 = {4.1, 4.2, 4.3, 4.4, 4.5};

    final List<double[]> aList = Arrays.asList(a1, a2, a3);

    double[][] x = new double[a1.length][3];
    for (int i = 0; i < a1.length; i++) {
      for (int j = 0; j < aList.size(); j++) {
        x[i][j] = aList.get(j)[i];
      }
    }

Замечания:

  • инициализировать x за пределами l oop
  • начинать с маленькой буквы для переменных
  • java объявление массива в стиле имеет форму type[] name
0 голосов
/ 02 мая 2020

Вот код, который работает:

        double a1[] = {2.1, 2.2, 2.3, 2.4, 2.5};
        double a2[] = {3.1, 3.2, 3.3, 3.4, 3.5};
        double a3[] = {4.1, 4.2, 4.3, 4.4, 4.5};
        double X[][] = new double[a1.length][3];
        for(int i=0; i< a1.length; i++){
                X[i][0] = a1[i];
                X[i][1] = a2[i];
                X[i][2] = a3[i];
        }
        for(int i = 0 ; i <a1.length ; i++){
            for(int j = 0 ; j < 3 ; j++){
                System.out.print(X[i][j] + " ");
            }
            System.out.println();
        }

Я думаю, что это довольно просто. Дело в том, что если вы собираетесь делать это для произвольного числа массивов, то это не сработает. Одна вещь, которую вы должны отметить, что вы не можете переопределять X каждый раз, когда вы помещаете что-то в него. Вы определяете это один раз и придерживаетесь его.

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