Возврат одного массива в многомерный массив - PullRequest
0 голосов
/ 12 октября 2018

Полное раскрытие;Мне нужно было знать это для назначения.Я хотел вернуть один массив в многомерный массив из метода.Я обошел проблему с приведенным ниже кодом, вернув его в другой одномерный массив, а затем использовал цикл for для передачи значений.

public class test 
{
    public static void main ( String args[] )
    {
        int[][] array1 = new int [100][5];
        int[] temp = new int [5];
        int num = 0;

        temp = setValue();

        for (int i = 0; i<=4; i++) // cycle 1
        {
            array1[num][i]= temp[i];
        }

        System.out.format("\n\n");

    }

    public static int[] setValue()
    {
        int[] array3 = new int [5];

        for (int i = 0; i<=4; i++)
        {
            array3[i]= 2;
        }

        return array3;
    }
}

Есть ли более традиционный способ вернуть array3 в array1 без цикла 1?Что-то вроде

array1[num][] = setValue();

Ответы [ 2 ]

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

Комментарии:

  • Метод возвращает новый массив, поэтому нет необходимости инициализировать temp, или, что еще лучше, инициализировать его для получения возвращаемого значения:

    int[] temp = setValue();
    
  • В Java нет двумерных массивов, только массивы массивов, поэтому вместо копирования значений можно заменить весь внутренний массив:

    for (int i = 0; i <= 4; i++) // cycle 1
    {
    array1[num] = temp;
    }

  • Когда вы это сделаете, вы не должныt выделите внутренние массивы, т.е. замените [5] на []:

    int[][] array1 = new int[100][];
    
  • Теперь на самом деле больше нет необходимости в temp, оставляя main просто:

    int[][] array1 = new int[100][];
    int num = 0;
    
    array1[num] = setValue();
    
  • Поскольку вы, вероятно, хотите заполнить весь 2D-массив:

    int[][] array1 = new int[100][];
    
    for (int num = 0; num < array1.length; num++) {
        array1[num] = setValue();
    }
    
0 голосов
/ 12 октября 2018

Как подсказал @VinceEmigh выше, вы можете просто сделать array1[num] = setValue();

см.

int arr[][] = new int[5][];

for (int x = 0; x < arr.length; x++) {
    arr[x] = setValue();
}
for (int x = 0; x < arr.length; x++) {
    for (int y = 0; y < arr[x].length; y++) {
        System.out.println(arr[x][y]);
    }
}
...