Помощь в понимании многомерных массивов - PullRequest
1 голос
/ 14 апреля 2010

Я много гуглял, чтобы получить уроки, которые можно понять из 3-D массивов, но кажется, что все уроки в 2-D массивах. Поэтому мне нужно небольшое объяснение, чтобы понять, что происходит с трехмерными массивами.

Я очень хорошо понимаю двумерные массивы, но мне трудно понять трехмерные и т. Д. Массивы. Я знаю, что двумерные массивы обозначают строки и столбцы, но как насчет трехмерных массивов:

Мое понимание кода ниже состоит в том, что должно быть 3 строки и 4 столбца, но 5 в последней позиции заставляет его выглядеть иначе. Мне нужна помощь в понимании, почему есть 12 строк и 5 столбцов. А также, если вы можете помочь мне в понимании 4 или 5-мерных массивов

Спасибо.

 class ThreeDMatrix

{

public static void main(String[] args) 

{

int threeD[][][] = new int[3][4][5];

int i,j,k;

for (i=0; i<3; i++)

for(j=0; j<4; j++)

for (k=0; k<5; k++)

threeD[i][j][k]= i*j*k;


{

for(i=0; i<3; i++)

for(j=0; j<4; j++){

for (k=0; k<5; k++ )

{

System.out.print("-" + threeD[i][j][k]); 

}

System.out.println();

}

System.out.println();

}

}
}

ВЫВОД:

-0-0-0-0-0

-0-0-0-0-0

-0-0-0-0-0

-0-0-0-0-0

-0-0-0-0-0

-0-1-2-3-4

-0-2-4-6-8

-0-3-6-9-12

-0-0-0-0-0

-0-2-4-6-8

-0-4-8-12-16

-0-6-12-18-24

Пожалуйста, извините за плохую визуализацию кода. Я действительно не знаю, как правильно использовать теги кода. Если кто-то покажет мне, я сделаю репост. спасибо

Ответы [ 3 ]

5 голосов
/ 14 апреля 2010

Вы можете видеть ваш трехмерный массив как 3 двумерных массива из 4х5 элементов или 12 одномерных массивов из 5 элементов.

Вот почему у вас есть 12 строк в выводе.

Думайте об этом массиве как int[12][5], где первый индекс зависит от двух разных индексов. Это относится и к n-мерному массиву. Это просто вопрос индексов ..

Если вам действительно нужна помощь в представлении этого, вам следует сначала рассмотреть двумерный массив, в вашем примере массив 4x5 .. так что у вас есть что-то вроде

00 01 02 03 04
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34

когда вы добавляете третье измерение, все равно что иметь несколько матриц, которые остаются одна на другой ..

так что если у вас есть int[2][4][5], у вас будет

first index == 0

00 01 02 03 04
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34

и еще один

first index == 1

00 01 02 03 04
10 11 12 13 14
20 21 22 23 24
30 31 32 33 34

Может быть, эта картина может уточнить:

альтернативный текст http://i.msdn.microsoft.com/02e7z943.ArrayExDimThree%28en-us,VS.90%29.gif

Каждый лист, извлеченный из «твердого тела», представляет собой двумерный массив. Фактически, как вы можете видеть, каждый лист имеет одинаковый первый индекс (0 для первого, 1 для второго и т. Д.). Таким образом, указав первый индекс, вы выбираете матрицу, а затем вы можете выбрать точный элемент, используя два других индекса.

Конечно, вы можете расширить это на любое измерение, но было бы сложнее показать вам гипертвердое тело, представляющее массив.

1 голос
/ 14 апреля 2010

int foo[][][] объявляет массив массивов массивов int. Каждое новое «измерение» просто означает «возьми то, что у меня есть, и принеси мне множество таких». Называете ли вы их "строками", "столбцами" или чем-то еще, зависит только от вас.

В вашем примере вы видите 12 строк, потому что эффект ваших вложенных циклов состоит в том, что вы вызываете 12 раз System.out.println(). 12 символов новой строки означают 12 строк. Это не относится к структуре массива, а только к тому, как вы печатаете данные.

0 голосов
/ 14 апреля 2010

:-) Есть три группы из четырех подгрупп, каждая с 5 целыми числами. Каждая строка в вашей распечатке представляет собой подгруппу из 5 целых чисел. Четыре последовательные линии составляют одну группу. Если вы добавите «-» во второй System.out.println, ваша распечатка будет легче читать

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