Как я могу создать массив с учетом размеров, введенных пользователем?Многомерный массив с размерами
Например, если введено 5 (размеры) внутри этого массива нам нужен массив из 4-х размеров, внутри нее 3 размеров и т.д ...
Пожалуйста, помогите!
Как я могу создать массив с учетом размеров, введенных пользователем?Многомерный массив с размерами
Например, если введено 5 (размеры) внутри этого массива нам нужен массив из 4-х размеров, внутри нее 3 размеров и т.д ...
Пожалуйста, помогите!
Вы можете использовать Array#newInstance
int[][][] ar = (int[][][]) Array.newInstance(int.class, 3, 2, 1);
System.out.println(Arrays.deepToString(ar));
или
int[] dimensionLengths = new int[numberOfDimensions];
Arrays.fill(dimensionLengths, 1);
Array.newInstance(int.class, dimensionLengths);
Я предполагаю, что OP хочет создать массив без знания размеров во время компиляции. – WannaBeCoder
'numberOfDimensions' в моем втором примере не нужно знать во время компиляции – Alex
Я просто перечитаю ваш ответ. Извините за мой предыдущий комментарий. Это очень хорошая идея. Однако во втором примере вам нужно заполнить это 'int [numberOfDimensions]' чем-то, прежде чем передать его в 'newInstance'. Как все или что-то. Во всяком случае, +1 за отличную идею. –
Поскольку массив является объектом, массив объекта Object (Object []) может содержать массивы и т. Д. Для этого потребовалось бы много отливок, и было бы очень небезопасно и безобразно, но это можно сделать.
Например:
Object[] arr3d = new Object[10]; // create the first dimension
arr3d[0] = new Object[20]; // create the second dimension
((Object[])arr3d[0])[0] = new Object[30]; // create the third dimension
...
Я не рекомендовал бы на самом деле делать это, хотя.
Вам нужно сделать это в цикле, чтобы выполнить требования к вопросу. –
@DavidWallace yep – Eran
Не могли бы вы быть немного более ясно? Извините, но я не понимаю, что вы говорите. – WannaBeCoder
Приведите пример того, что вы ожидаете. – Riad
Я имел в виду, если я даю 5 в качестве параметра, указывающего размеры массива, как я могу это сделать? Просто давая число измерений – Silmar