Скажем, у меня есть одномерный массив вроде

int[] array1d = {1,2,3}

Я хотел бы преобразовать его в 2D array2d[3][2], который содержит 2 разных int. Например.:

1  2
1  3
2  3

В настоящее время я сделал это

int[] array1d = new int[3];
        array1d[0] = 1;
        array1d[1] = 2;
        array1d[2] = 3;

int[][] array2d = new int[3][2];

for (int i=0; i<3; i++) {
            for (int j=0; j<2; j++) {
                array2d[i][j] = array1d[j];
            }
        }

Но это дает мне только 1,2.

0
mddev 25 Фев 2016 в 21:33

2 ответа

Лучший ответ

Вообще говоря, то, что вы хотите, называется комбинациями (в вашем примере размер 2 взят из 3-х мерный массив). Итак, порядок не имеет значения (например, [1, 2] равно [2, 1]).

Как уже указывалось в комментариях, вам следует рассмотреть более общее решение, и его можно найти здесь. Помимо самого кода, вы также найдете обзоры кода от сообщества Codereview.

1
Community 13 Апр 2017 в 12:40

Я сделал это, используя случайные числа. попробуйте этот код

`import java.util.Random;

     public final class RandomInteger {

   public static void main(String... aArgs){

    Random randomGenerator = new Random();  
    int[] array1d = new int[3];
    array1d[0] = 1;
    array1d[1] = 2;
    array1d[2] = 3;
    int[] array2d = new int[3][2];
    int randomInt;
    for (int i=0; i<3; i++) {
          for (int j=0; j<2; j++) {
              randomInt = randomGenerator.nextInt(3);
              array2d[i][j] = array1d[randomInt];
                                   }
                            }

                                              }
                                    }    

`

0
Nishant Pal 25 Фев 2016 в 20:23