Osnove polja v Javi Večdimenzionalni nizi lahko definiramo s preprostimi besedami kot niz nizov. Podatki v večdimenzionalnih nizih so shranjeni v obliki tabele (v glavnem vrstnem redu).
Sintaksa:
data_type [1. dimenzija][2. dimenzija][]..[N. dimenzija] ime_matrike = nov podatkovni_tip [velikost1][velikost2]…[velikostN];
kje:
- data_type : vrsta podatkov, ki bodo shranjeni v matriki. Na primer: int, char itd.
- razsežnost : dimenzija ustvarjene matrike. Na primer: 1D, 2D itd.
- ime_matrike : ime matrike
- velikost1, velikost2, …, velikostN : Velikosti dimenzij oz.
Primeri:
Two dimensional array: int[][] twoD_arr = new int[10][20]; Three dimensional array: int[][][] threeD_arr = new int[10][20][30];>
Velikost večdimenzionalnih nizov : Skupno število elementov, ki jih je mogoče shraniti v večdimenzionalni niz, je mogoče izračunati z množenjem velikosti vseh dimenzij.
Na primer: Niz int[][] x = novo int[10][20] lahko shrani skupno (10*20) = 200 elementov. Podobno, array int[][][] x = novo int[5][10][20] lahko shrani skupno (5*10*20) = 1000 elementov.
Uporaba večdimenzionalne matrike
● Večdimenzionalni nizi se uporabljajo za shranjevanje podatkov v obliki tabele. Na primer, shranjevanje imenske številke in ocen študenta je mogoče preprosto izvesti z uporabo večdimenzionalnih nizov. Druga pogosta uporaba je shranjevanje slik v 3D nizih.
● V vprašanjih dinamičnega programiranja se uporabljajo večdimenzionalni nizi, ki se uporabljajo za predstavitev stanj problema.
● Poleg tega imajo tudi aplikacije v številnih standardnih algoritemskih problemih, kot so: množenje matrik, predstavitev matrike sosednosti v grafih, težave pri iskanju v mreži
Dvodimenzionalni niz (2D-matrika)
Dvodimenzionalni niz je najenostavnejša oblika večdimenzionalnega niza. Dvodimenzionalno matriko lahko za lažje razumevanje razumemo kot matriko enodimenzionalne matrike.
Posredna metoda deklaracije:
- Deklaracija – sintaksa:
data_type[][] array_name = new data_type[x][y]; For example: int[][] arr = new int[10][20];>
- Inicializacija – sintaksa:
array_name[row_index][column_index] = value; For example: arr[0][0] = 1;>
primer: 1
Java
import> java.io.*;> public> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][] arr =>new> int>[>10>][>20>];> >arr[>0>][>0>] =>1>;> >System.out.println(>'arr[0][0] = '> + arr[>0>][>0>]);> >}> }> |
niz v celo število java
>
>Izhod
arr[0][0] = 1>
Primer: Implementacija 2D polja s privzetimi vrednostmi z matriko 4*4
Java
public> class> TwoDArray {> >public> static> void> main(String[] args) {> >int> rows =>4>;> >int> columns =>4>;> >int>[][] array =>new> int>[rows][columns];> >int> value =>1>;> >for> (>int> i =>0>; i for (int j = 0; j array[i][j] = value; value++; } } System.out.println('The 2D array is: '); for (int i = 0; i for (int j = 0; j System.out.print(array[i][j] + ' '); } System.out.println(); } } }> |
>
>Izhod
The 2D array is: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16>
Pojasnilo:
- Število vrstic in stolpcev je podano s spremenljivkama vrstice in stolpci. 2D niz je ustvarjen z uporabo operatorja new, ki dodeli pomnilnik za niz. Velikost matrike je določena z vrsticami in stolpci.
Neposredna metoda deklaracije: Sintaksa:
data_type[][] array_name = { {valueR1C1, valueR1C2, ....}, {valueR2C1, valueR2C2, ....} }; For example: int[][] arr = {{1, 2}, {3, 4}};> primer:
Java
import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][] arr = { {>1>,>2> }, {>3>,>4> } };> >for> (>int> i =>0>; i <>2>; i++)> >for> (>int> j =>0>; j <>2>; j++)> >System.out.println(>'arr['> + i +>']['> + j +>'] = '> >+ arr[i][j]);> >}> }> |
>
>Izhod
arr[0][0] = 1 arr[0][1] = 2 arr[1][0] = 3 arr[1][1] = 4>
Dostop do elementov dvodimenzionalnih nizov
Elementi v dvodimenzionalnih nizih so običajno označeni z x[i][j] kjer je 'i' številka vrstice in 'j' številka stolpca.
Sintaksa:
x[row_index][column_index]>
Na primer:
int[][] arr = new int[10][20]; arr[0][0] = 1;>
Zgornji primer predstavlja element v prvi vrstici in prvem stolpcu. Opomba : V nizih, če je velikost niza N. Njegov indeks bo od 0 do N-1. Zato je za row_index 2 dejanska številka vrstice 2+1 = 3. primer:
Java
import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][] arr = { {>1>,>2> }, {>3>,>4> } };> >System.out.println(>'arr[0][0] = '> + arr[>0>][>0>]);> >}> }> |
>
>Izhod
arr[0][0] = 1>
Predstavitev 2D polja v obliki tabele:
Dvodimenzionalno matriko lahko vidimo kot tabelo z vrsticami 'x' in stolpci 'y', kjer se številka vrstice giblje od 0 do (x-1), številka stolpca pa se giblje od 0 do (y-1). Spodaj je prikazan dvodimenzionalni niz 'x' s 3 vrsticami in 3 stolpci:

Natisnite 2D matriko v obliki tabele:
Če želite izpisati vse elemente dvodimenzionalne matrike, uporabite ugnezdene zanke. Za to sta potrebni dve zanki for, ena za prečkanje vrstic in druga za prečkanje stolpcev.
primer:
Java
import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][] arr = { {>1>,>2> }, {>3>,>4> } };> >for> (>int> i =>0>; i <>2>; i++) {> >for> (>int> j =>0>; j <>2>; j++) {> >System.out.print(arr[i][j] +>' '>);> >}> >System.out.println();> >}> >}> }> |
>
>Izhod
1 2 3 4>
Primer: Izvedba 2D polja z vnosom uporabnika
Java
import> java.util.Scanner;> public> class> Main {> >public> static> void> main(String[] args)> >{> >Scanner scan =>new> Scanner(System.in);> >System.out.print(>'Enter number of rows: '>);> >int> rows = scan.nextInt();> >System.out.print(>'Enter number of columns: '>);> >int> columns = scan.nextInt();> >int>[][] multidimensionalArray=>new> int>[rows][columns];> >// Now you can use the array like a regular> >// 2-dimensional array> >for> (>int> i =>0>; i for (int j = 0; j multidimensionalArray[i][j]= (i + 1) * (j + 1); } } for (int i = 0; i for (int j = 0; j System.out.print(multidimensionalArray[i][j]+ ' '); } System.out.println(); } scan.close(); } }> |
>
>
Izhod
Enter number of rows: 3 Enter number of columns: 3 1 2 3 2 4 6 3 6 9>
- Ta koda pozove uporabnika, da vnese število vrstic in stolpcev za 2-dimenzionalni niz. Razred Scanner se uporablja za branje uporabniškega vnosa. Nato ustvari 2-dimenzionalno matriko celih števil z določenim številom vrstic in stolpcev ter vsakemu elementu matrike dodeli i*j.
- Če želite ustvariti večdimenzionalno matriko z več kot dvema dimenzijama, lahko uporabite enak pristop za ustvarjanje matrike matrik. Če želite na primer ustvariti 3-dimenzionalno matriko, lahko ustvarite matriko 2-dimenzionalnih matrik.
Tridimenzionalni niz (3D-matrika)
Tridimenzionalni niz je kompleksna oblika večdimenzionalnega niza. Tridimenzionalni niz lahko za lažje razumevanje razumemo kot niz dvodimenzionalnih nizov.
Posredna metoda deklaracije:
- Deklaracija – sintaksa:
data_type[][][] array_name = new data_type[x][y][z]; For example: int[][][] arr = new int[10][20][30];>
- Inicializacija – sintaksa:
array_name[array_index][row_index][column_index] = value; For example: arr[0][0][0] = 1;>
primer:
Java
import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][][] arr =>new> int>[>10>][>20>][>30>];> >arr[>0>][>0>][>0>] =>1>;> >System.out.println(>'arr[0][0][0] = '> + arr[>0>][>0>][>0>]);> >}> }> |
>
>Izhod
arr[0][0][0] = 1>
Neposredna metoda deklaracije: Sintaksa:
data_type[][][] array_name = { { {valueA1R1C1, valueA1R1C2, ....}, {valueA1R2C1, valueA1R2C2, ....} }, { {valueA2R1C1, valueA2R1C2, ....}, {valueA2R2C1, valueA2R2C2, ....} } }; For example: int[][][] arr = { {{1, 2}, {3, 4}}, {{5, 6}, {7, 8}} };> primer:
Java
import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][][] arr = { { {>1>,>2> }, {>3>,>4> } }, { {>5>,>6> }, {>7>,>8> } } };> >for> (>int> i =>0>; i <>2>; i++)> >for> (>int> j =>0>; j <>2>; j++)> >for> (>int> z =>0>; z <>2>; z++)> >System.out.println(>'arr['> + i> >+>']['> >+ j +>']['> >+ z +>'] = '> >+ arr[i][j][z]);> >}> }> |
>
>Izhod
arr[0][0][0] = 1 arr[0][0][1] = 2 arr[0][1][0] = 3 arr[0][1][1] = 4 arr[1][0][0] = 5 arr[1][0][1] = 6 arr[1][1][0] = 7 arr[1][1][1] = 8>
Dostop do elementov tridimenzionalnih nizov
Elementi v tridimenzionalnih nizih so običajno označeni z x[i][j][k] kjer je 'i' številka polja, 'j' je številka vrstice in 'k' je številka stolpca.
Sintaksa:
x[array_index][row_index][column_index]>
Na primer:
int[][][] arr = new int[10][20][30]; arr[0][0][0] = 1;>
Zgornji primer predstavlja element, ki je prisoten v prvi vrstici in prvem stolpcu prvega niza v deklariranem 3D nizu.
Opomba : V nizih, če je velikost niza N. Njegov indeks bo od 0 do N-1. Zato je za row_index 2 dejanska številka vrstice 2+1 = 3.
primer:
Java
import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][][] arr = { { {>1>,>2> }, {>3>,>4> } }, { {>5>,>6> }, {>7>,>8> } } };> >System.out.println(>'arr[0][0][0] = '> + arr[>0>][>0>][>0>]);> >}> }> |
>
>Izhod
arr[0][0][0] = 1>
Predstavitev 3D polja v obliki tabele:
Tridimenzionalno matriko lahko vidimo kot tabelo matrik z vrsticami 'x' in stolpci 'y', kjer je številka vrstice od 0 do (x-1), številka stolpca pa od 0 do (y-1). Spodaj je prikazan tridimenzionalni niz s tremi nizi, ki vsebujejo 3 vrstice in 3 stolpce:

Natisnite 3D matriko v obliki tabele:
Če želite izpisati vse elemente tridimenzionalne matrike, uporabite ugnezdene zanke. Za to so potrebne tri zanke for, ena za prečkanje nizov, druga za prečkanje vrstic in druga za prečkanje stolpcev.
primer:
Java
import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][][] arr = { { {>1>,>2> }, {>3>,>4> } },> >{ {>5>,>6> }, {>7>,>8> } } };> >for> (>int> i =>0>; i <>2>; i++) {> >for> (>int> j =>0>; j <>2>; j++) {> >for> (>int> k =>0>; k <>2>; k++) {> >System.out.print(arr[i][j][k] +>' '>);> >}> >System.out.println();> >}> >System.out.println();> >}> >}> }> |
>
>Izhod
1 2 3 4 5 6 7 8>
Vstavljanje večdimenzionalne matrike med izvajanjem:
Ta tema je prisiljena n sprejeti uporabniško definiran vnos v večdimenzionalni niz med izvajanjem. Osredotočen je na to, da uporabnik najprej vnese vse vnose v program med izvajanjem in po vseh vnesenih vnosih bo program dal izhod glede na vsak vhod ustrezno. Uporabno je, ko želi uporabnik najprej vnesti več testnih primerov z več različnimi vrednostmi in ko bo vse to opravljeno, bo program začel zagotavljati izhod. Kot primer poiščimo skupno število sodih in lihih števil v vhodni matriki. Tukaj bomo uporabili koncept 2-dimenzionalne matrike.
Tukaj je nekaj točk, ki pojasnjujejo uporabo različnih elementov v prihajajoči kodi:
- Celo število vrstic se obravnava kot število testnih primerov, vrednosti stolpcev pa se štejejo kot vrednosti v vsakem testnem primeru.
- Ena zanka for() se uporablja za posodabljanje številke testnega primera, druga zanka for() pa za prevzem ustreznih vrednosti matrike.
- Ko so vsi vnosi opravljeni, se znova uporabita dve zanki for() na enak način za izvedbo programa v skladu s podanim pogojem.
- Prva vrstica vnosa je skupno število testnih primerov.
- Druga vrstica prikazuje skupno število vrednosti prve matrike.
- Tretja vrstica podaja vrednosti matrike in tako naprej.
Izvedba:
Java
import> java.io.*;> import> java.util.Scanner;> class> GFGTestCase {> >public> static> void> main(String[] args)> >{> >// Scanner class to take> >// values from console> >Scanner scanner =>new> Scanner(System.in);> >// totalTestCases = total> >// number of TestCases> >// eachTestCaseValues => >// values in each TestCase as> >// an Array values> >int> totalTestCases, eachTestCaseValues;> >// takes total number of> >// TestCases as integer number> >totalTestCases = scanner.nextInt();> >// An array is formed as row> >// values for total testCases> >int>[][] arrayMain =>new> int>[totalTestCases][];> >// for loop to take input of> >// values in each TestCase> >for> (>int> i =>0>; i eachTestCaseValues = scanner.nextInt(); arrayMain[i] = new int[eachTestCaseValues]; for (int j = 0; j arrayMain[i][j] = scanner.nextInt(); } } // All input entry is done. // Start executing output // according to condition provided for (int i = 0; i // Initialize total number of // even & odd numbers to zero int nEvenNumbers = 0, nOddNumbers = 0; // prints TestCase number with // total number of its arguments System.out.println('TestCase ' + i + ' with ' + arrayMain[i].length + ' values:'); for (int j = 0; j System.out.print(arrayMain[i][j] + ' '); // even & odd counter updated as // eligible number is found if (arrayMain[i][j] % 2 == 0) { nEvenNumbers++; } else { nOddNumbers++; } } System.out.println(); // Prints total numbers of // even & odd System.out.println( 'Total Even numbers: ' + nEvenNumbers + ', Total Odd numbers: ' + nOddNumbers); } } } // This code is contributed by Udayan Kamble.> |
>
>
Izhod:
Input: 2 2 1 2 3 1 2 3 Output: TestCase 0 with 2 values: 1 2 Total Even numbers: 1, Total Odd numbers: 1 TestCase 1 with 3 values: 1 2 3 Total Even numbers: 1, Total Odd numbers: 2 Input: 3 8 1 2 3 4 5 11 55 66 5 100 101 55 35 108 6 3 80 11 2 1 5 Output: TestCase 0 with 8 values: 1 2 3 4 5 11 55 66 Total Even numbers: 3, Total Odd numbers: 5 TestCase 1 with 5 values: 100 101 55 35 108 Total Even numbers: 2, Total Odd numbers: 3 TestCase 2 with 6 values: 3 80 11 2 1 5 Total Even numbers: 2, Total Odd numbers: 4>