Składnia tworzenia tablicy dwuwymiarowej
Rozważmy:
int[][] multD = new int[5][];
multD[0] = new int[10];
Czy w ten sposób tworzy się dwuwymiarową tablicę z 5 wierszami i 10 kolumnami?
Widziałem ten kod w Internecie, ale składnia nie miała sensu.
11 answers
Spróbuj:
int[][] multi = new int[5][10];
... czyli krótka ręka na coś takiego:
int[][] multi = new int[5][];
multi[0] = new int[10];
multi[1] = new int[10];
multi[2] = new int[10];
multi[3] = new int[10];
multi[4] = new int[10];
Zauważ, że każdy element zostanie zainicjowany do wartości domyślnej dla int
, 0
, tak więc powyższe są również równoważne:
int[][] multi = new int[][]{
{ 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, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-21 18:04:34
Możemy zadeklarować tablicę dwuwymiarową i bezpośrednio przechowywać elementy w czasie jej deklaracji jako:
int marks[][]={{50,60,55,67,70},{62,65,70,70,81},{72,66,77,80,69}};
Tutaj int przedstawia elementy typu integer zapisane w tablicy, a nazwa tablicy to 'marks'. int jest typem danych dla wszystkich elementów reprezentowanych w klamrach " {"i"}", ponieważ tablica jest zbiorem elementów o tym samym typie danych.
Wracając do naszej wypowiedzi napisanej powyżej: każdy wiersz elementów powinien być napisany wewnątrz kręcone szelki. Wiersze i elementy w każdym wierszu powinny być oddzielone przecinkami.
Teraz obserwuj instrukcję: możesz uzyskać 3 wiersze i 5 kolumn, więc JVM tworzy 3 * 5 = 15 bloków pamięci. Bloki te mogą być indywidualnie określane jako:
marks[0][0] marks[0][1] marks[0][2] marks[0][3] marks[0][4]
marks[1][0] marks[1][1] marks[1][2] marks[1][3] marks[1][4]
marks[2][0] marks[2][1] marks[2][2] marks[2][3] marks[2][4]
Uwaga:
Jeśli chcesz przechowywać N elementy, to indeks tablicy zaczyna się od zera i kończy na n-1.
Innym sposobem tworzenia tablicy dwuwymiarowej jest zadeklarowanie tablicy jako pierwszej i następnie przypisanie pamięci do niego za pomocą nowego operatora.
int marks[][]; // declare marks array
marks = new int[3][5]; // allocate memory for storing 15 elements
Łącząc powyższe dwa możemy napisać:
int marks[][] = new int[3][5];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-24 04:03:02
Możesz je tworzyć tak, jak inni wspominali. Jeszcze jeden punkt do dodania: możesz nawet utworzyć przekrzywioną tablicę dwuwymiarową z każdym wierszem, niekoniecznie mającą tę samą liczbę collumnów, jak to:
int array[][] = new int[3][];
array[0] = new int[3];
array[1] = new int[2];
array[2] = new int[5];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-09 22:32:19
Najczęstszym idiomem do tworzenia tablicy dwuwymiarowej z 5 rzędy i 10 kolumny to:
int[][] multD = new int[5][10];
Alternatywnie, możesz użyć następującego wzoru, który jest bardziej podobny do tego, co masz, chociaż musisz jawnie zainicjalizować każdy wiersz:
int[][] multD = new int[5][];
for (int i = 0; i < 5; i++) {
multD[i] = new int[10];
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-01 21:20:17
Try:
int[][] multD = new int[5][10];
Zauważ, że w Twoim kodzie tylko pierwsza linia tablicy 2D jest inicjalizowana na 0.
Linie od 2 do 5 nawet nie istnieją. Jeśli spróbujesz je wydrukować, dostaniesz null
za każdego z nich.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-09 22:31:30
W Javie tablica dwuwymiarowa może być zadeklarowana jako taka sama jak tablica jednowymiarowa. W tablicy jednowymiarowej można zapisać jak
int array[] = new int[5];
Gdzie int jest typem danych, array [] jest deklaracją array, a {[3] } jest tablicą z obiektami z pięcioma indeksami.
W ten sposób można zapisać tablicę dwuwymiarową w następujący sposób.
int array[][];
array = new int[3][4];
TUTAJ array
jest typem danych int. Najpierw zadeklarowałem na jednowymiarowej tablicy tego typu, potem 3 wiersz i 4 kolumna tablica jest tworzona.
W Twoim kodzie
int[][] multD = new int[5][];
multD[0] = new int[10];
Oznacza, że stworzyłeś dwuwymiarową tablicę z pięcioma wierszami. W pierwszy wiersz zawiera 10 kolumn. W języku Java możesz wybrać rozmiar kolumny dla każdego wiersza.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-09 22:36:48
Możliwe jest również zadeklarowanie go w następujący sposób. To nie jest dobry projekt, ale działa.
int[] twoDimIntArray[] = new int[5][10];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-09 22:37:44
int [][] twoDim = new int [5][5];
int a = (twoDim.length);//5
int b = (twoDim[0].length);//5
for(int i = 0; i < a; i++){ // 1 2 3 4 5
for(int j = 0; j <b; j++) { // 1 2 3 4 5
int x = (i+1)*(j+1);
twoDim[i][j] = x;
if (x<10) {
System.out.print(" " + x + " ");
} else {
System.out.print(x + " ");
}
}//end of for J
System.out.println();
}//end of for i
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-09 09:11:27
int rows = 5;
int cols = 10;
int[] multD = new int[rows * cols];
for (int r = 0; r < rows; r++)
{
for (int c = 0; c < cols; c++)
{
int index = r * cols + c;
multD[index] = index * 2;
}
}
Smacznego!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-23 11:28:41
Spróbuj w ten sposób:
int a[][] = {{1,2}, {3,4}};
int b[] = {1, 2, 3, 4};
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-11 02:14:17
Tego typu tablice są znane jako postrzępione tablice w Javie:
int[][] multD = new int[3][];
multD[0] = new int[3];
multD[1] = new int[2];
multD[2] = new int[5];
W tym scenariuszu każdy wiersz tablicy zawiera inną liczbę kolumn. W powyższym przykładzie pierwszy wiersz będzie zawierał trzy kolumny, drugi wiersz będzie zawierał dwie kolumny, a trzeci wiersz będzie zawierał pięć kolumn. Możesz zainicjalizować tę tablicę podczas kompilacji jak poniżej:
int[][] multD = {{2, 4, 1}, {6, 8}, {7, 3, 6, 5, 1}};
Możesz łatwo iterować wszystkie elementy w tablicy:
for (int i = 0; i<multD.length; i++) {
for (int j = 0; j<multD[i].length; j++) {
System.out.print(multD[i][j] + "\t");
}
System.out.println();
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-11 02:17:16