logo

Različni načini za deklaracijo in inicializacijo 2-D matrike v Javi

Večdimenzionalni niz. Najpogosteje uporabljena večdimenzionalna polja so 2-D in 3-D polja. Lahko rečemo, da je vsako večdimenzionalno polje v bistvu niz nizov. Zelo pogost primer 2D polja je šahovnica. Šahovnica je mreža, ki vsebuje 64 kvadratov 1×1. Podobno si lahko predstavljate 2D niz. V 2D matriki je vsak element povezan s številko vrstice in številko stolpca. Dostop do katerega koli elementa 2D matrike je podoben dostopu do zapisa Excelove datoteke z uporabo številke vrstice in številke stolpca. 2D nizi so uporabni pri izvajanju igre Tic-Tac-Toe, šaha ali celo pri shranjevanju slikovnih pik.



Deklaracija 2-D matrike v Javi:

Vsako dvodimenzionalno matriko je mogoče deklarirati na naslednji način:

Sintaksa:

data_type ime_matrike [][]; (ALI) data_type [][] ime_matrike;



    data_type: Ker je Java statično tipiziran jezik (tj. pričakuje, da bodo njene spremenljivke deklarirane, preden jim je mogoče dodeliti vrednosti). Torej določanje tipa podatkov določa vrsto elementov, ki jih bo sprejel. npr. če želite shraniti samo celoštevilske vrednosti, bo podatkovni tip deklariran kot int. ime_matrike: To je ime, ki je dodeljeno 2-D matriki. npr. predmeti, učenci, sadje, oddelek itd.

Opomba: Za data_type lahko zapišemo [ ][ ] ali pa [ ][ ] za ime_matrike, medtem ko deklariramo 2D matriko.

Java






// java program showing declaration of arrays> import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> > >int>[][] integer2DArray;>// 2D integer array> >String[][] string2DArray;>// 2D String array> >double>[][] double2DArray;>// 2D double array> >boolean>[][] boolean2DArray;>// 2D boolean array> >float>[][] float2DArray;>// 2D float array> >double>[][] double2DArray;>// 2D double array> >}> }>

>

>

Različni pristopi za inicializacijo 2-D matrike v Javi:

vrsta_podatkov[][] ime_matrike = novo vrsta_podatkov[št_vrstic][št_stolpcev];

Skupno število elementov v kateri koli 2D matriki bo enako (št_vrstic) * (št_stolpcev).

    no_of_rows: Število vrstic v matriki. npr. no_of_rows = 3, potem bo imela matrika tri vrstice. no_of_columns: Število stolpcev v matriki. npr. no_of_columns = 4, bo imela matrika štiri stolpce.

Zgornja sintaksa inicializacije matrike bo dodelila privzete vrednosti vsem elementom matrike glede na podani tip podatkov.
Spodaj je implementacija različnih pristopov za inicializacijo 2D nizov:

Pristop 1:

Java




// java program to initialize a 2D array> import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Declaration along with initialization> >// 2D integer array with 5 rows and 3 columns> >// integer array elements are initialized with 0> >int>[][] integer2DArray =>new> int>[>5>][>3>];> >System.out.println(> >'Default value of int array element: '> >+ integer2DArray[>0>][>0>]);> > >// 2D String array with 4 rows and 4 columns> >// String array elements are initialized with null> >String[][] string2DArray =>new> String[>4>][>4>];> >System.out.println(> >'Default value of String array element: '> >+ string2DArray[>0>][>0>]);> > >// 2D boolean array with 3 rows and 5 columns> >// boolean array elements are initialized with false> >boolean>[][] boolean2DArray =>new> boolean>[>4>][>4>];> >System.out.println(> >'Default value of boolean array element: '> >+ boolean2DArray[>0>][>0>]);> > >// 2D char array with 10 rows and 10 columns> >// char array elements are initialized with> >// 'u0000'(null character)> >char>[][] char2DArray =>new> char>[>10>][>10>];> >System.out.println(> >'Default value of char array element: '> >+ char2DArray[>0>][>0>]);> > >// First declaration and then initialization> >int>[][] arr;>// declaration> > >// System.out.println('arr[0][0]: '+ arr[0][0]);> >// The above line will throw an error, as we have> >// only declared the 2D array, but not initialized> >// it.> >arr =>new> int>[>5>][>3>];>// initialization> >System.out.println(>'arr[0][0]: '> + arr[>0>][>0>]);> >}> }>

kakšna je velikost mojega monitorja
>

>

Opomba: Ko inicializirate 2D matriko, morate vedno določiti prvo dimenzijo (št. vrstic), vendar lahko podajanje druge dimenzije (št. stolpcev) izpustite.

V spodnjem delčku kode nismo določili števila stolpcev. Vendar pa je prevajalnik Jave dovolj pameten, da manipulira z velikostjo s preverjanjem števila elementov znotraj stolpcev.

Java




import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// The line below will throw an error, as the first> >// dimension(no. of rows) is not specified> >int>[][] arr =>new> int>[][>3>];> > >// The line below will execute without any error, as> >// the first dimension(no. of rows) is specified> >int>[][] arr =>new> int>[>2>][];> >}> }>

>

>

Z uporabo številk vrstic in številk stolpcev lahko dostopate do katerega koli elementa 2D polja.

Pristop 2:

V spodnjem delčku kode nismo določili števila vrstic in stolpcev. Vendar pa je prevajalnik Jave dovolj pameten, da manipulira z velikostjo s preverjanjem števila elementov znotraj vrstic in stolpcev.

Java




import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >String[][] subjects = {> >{>'Data Structures & Algorithms'>,> >'Programming & Logic'>,>'Software Engineering'>,> >'Theory of Computation'> },>// row 1> > >{>'Thermodynamics'>,>'Metallurgy'>,> >'Machine Drawing'>,> >'Fluid Mechanics'> },>// row2> > >{>'Signals and Systems'>,>'Digital Electronics'>,> >'Power Electronics'> }>// row3> >};> > >System.out.println(> >'Fundamental Subject in Computer Engineering: '> >+ subjects[>0>][>0>]);> >System.out.println(> >'Fundamental Subject in Mechanical Engineering: '> >+ subjects[>1>][>3>]);> >System.out.println(> >'Fundamental Subject in Electronics Engineering: '> >+ subjects[>2>][>1>]);> >}> }>

>

>

Izhod

Fundamental Subject in Computer Engineering: Data Structures & Algorithms Fundamental Subject in Mechanical Engineering: Fluid Mechanics Fundamental Subject in Electronics Engineering: Digital Electronics>

Pristop 3:

Poleg tega lahko inicializiramo vsak element matrike posebej. Poglejte spodnji delček kode:

Java




import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][] scores =>new> int>[>2>][>2>];> >// Initializing array element at position[0][0],> >// i.e. 0th row and 0th column> >scores[>0>][>0>] =>15>;> >// Initializing array element at position[0][1],> >// i.e. 0th row and 1st column> >scores[>0>][>1>] =>23>;> >// Initializing array element at position[1][0],> >// i.e. 1st row and 0th column> >scores[>1>][>0>] =>30>;> >// Initializing array element at position[1][1],> >// i.e. 1st row and 1st column> >scores[>1>][>1>] =>21>;> > >// printing the array elements individually> >System.out.println(>'scores[0][0] = '> >+ scores[>0>][>0>]);> >System.out.println(>'scores[0][1] = '> >+ scores[>0>][>1>]);> >System.out.println(>'scores[1][0] = '> >+ scores[>1>][>0>]);> >System.out.println(>'scores[1][1] = '> >+ scores[>1>][>1>]);> >// printing 2D array using Arrays.deepToString() method> >System.out.println(> >'Printing 2D array using Arrays.deepToString() method: '>);> >System.out.println(Arrays.deepToString(scores));> >}> }>

>

>

Izhod

scores[0][0] = 15 scores[0][1] = 23 scores[1][0] = 30 scores[1][1] = 21 Printing 2D array using Arrays.deepToString() method: [[15, 23], [30, 21]]>

Pristop 4

Uporaba zgornjega pristopa za inicializacijo matrike bi bila dolgočasna naloga, če je velikost 2D matrike prevelika. Učinkovit način je uporaba zanke for za inicializacijo elementov polja v primeru velikega 2D polja.

Java




import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >int> rows =>80>, columns =>5>;> >int>[][] marks =>new> int>[rows][columns];> > >// initializing the array elements using for loop> >for> (>int> i =>0>; i for (int j = 0; j marks[i][j] = i + j; } } // printing the first three rows of marks array System.out.println('First three rows are: '); for (int i = 0; i <3; i++) { for (int j = 0; j System.out.printf(marks[i][j] + ' '); } System.out.println(); } } }>

>

>

Izhod

First three rows are: 0 1 2 3 4 1 2 3 4 5 2 3 4 5 6>

Opomba: Uporabimo lahko arr. funkcija length za iskanje velikosti vrstic (1. dimenzija) in funkcija arr[0].length za iskanje velikosti stolpcev (2. dimenzija).

Pristop 5: (nazobčani nizi)

Morda obstaja določen scenarij, kjer želite, da ima vsaka vrstica različno število stolpcev. Ta vrsta matrike se imenuje nazobčana matrika.

Java




import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// declaring a 2D array with 2 rows> >int> jagged[][] =>new> int>[>2>][];> > >// not specifying the 2nd dimension,> >// and making it as jagged array> >// first row has 2 columns> >jagged[>0>] =>new> int>[>2>];> >// second row has 4 columns> >jagged[>1>] =>new> int>[>4>];> >// Initializing the array> >int> count =>0>;> >for> (>int> i =>0>; i // remember to use jagged[i].length instead of // jagged[0].length, since every row has // different number of columns for (int j = 0; j jagged[i][j] = count++; } } // printing the values of 2D Jagged array System.out.println('The values of 2D jagged array'); for (int i = 0; i for (int j = 0; j System.out.printf(jagged[i][j] + ' '); System.out.println(); } } }>

>

>

Izhod

The values of 2D jagged array 0 1 2 3 4 5>

Program za dodajanje dveh 2D nizov:

Java




import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][] arr1 = { {>1>,>2>,>3> }, {>4>,>5>,>6> } };> >int>[][] arr2 = { {>4>,>5>,>6> }, {>1>,>3>,>2> } };> >int>[][] sum =>new> int>[>2>][>3>];> > >// adding two 2D arrays element-wise> >for> (>int> i =>0>; i for (int j = 0; j 0].length; j++) { sum[i][j] = arr1[i][j] + arr2[i][j]; } } System.out.println('Resultant 2D array: '); for (int i = 0; i System.out.println(Arrays.toString(sum[i])); } } }>

>

>

virtualni pomnilnik
Izhod

Resultant 2D array: [5, 7, 9] [5, 8, 8]>