logo

Dažādi veidi, kā deklarēt un inicializēt 2-D masīvu Java

Daudzdimensiju masīvs. Visbiežāk izmantotie daudzdimensiju masīvi ir 2-D un 3-D masīvi. Mēs varam teikt, ka jebkurš augstākas dimensijas masīvs būtībā ir masīvu masīvs. Ļoti izplatīts 2D masīva piemērs ir šaha galds. Šaha galdiņš ir režģis, kurā ir 64 1 × 1 kvadrātveida kastes. Līdzīgi varat vizualizēt 2D masīvu. 2D masīvā katrs elements ir saistīts ar rindas numuru un kolonnas numuru. Piekļuve jebkuram 2D ​​masīva elementam ir līdzīga piekļuvei Excel faila ierakstam, izmantojot gan rindas numuru, gan kolonnas numuru. 2D masīvi ir noderīgi, ieviešot Tic-Tac-Toe spēli, šahu vai pat saglabājot attēla pikseļus.



Divdimensiju masīva deklarēšana Java valodā:

Jebkuru 2-dimensiju masīvu var deklarēt šādi:

Sintakse:

datu_tips masīva_nosaukums[][]; (VAI) datu_veids[][] masīva_nosaukums;



    data_type: tā kā Java ir statiski tipizēta valoda (t.i., tā sagaida, ka tās mainīgie tiks deklarēti, pirms tiem var piešķirt vērtības). Tātad, norādot datu tipu, tiek izlemts, kāda veida elementi tiks pieņemti. piem. lai saglabātu tikai veselu skaitļu vērtības, datu tips tiks deklarēts kā int. masīva_nosaukums: tas ir nosaukums, kas tiek piešķirts 2-D masīvam. piem. priekšmeti, studenti, augļi, nodaļa utt.

Piezīme: Mēs varam rakstīt [ ][ ] aiz data_type vai mēs varam rakstīt [ ][ ] aiz masīva_nosaukums, deklarējot 2D masīvu.

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> >}> }>

>

>

Dažādas pieejas 2-D masīva inicializācijai Java:

datu_veids[][] masīva_nosaukums = jauns datu_veids[rindu_skaits][kolonnu_skaits];

Kopējais elementu skaits jebkurā 2D masīvā būs vienāds ar (no_of_rows) * (no_of_columns).

    no_of_rows: rindu skaits masīvā. piem. no_of_rows = 3, tad masīvā būs trīs rindas. no_of_columns: kolonnu skaits masīvā. piem. no_of_columns = 4, tad masīvā būs četras kolonnas.

Iepriekš minētā masīva inicializācijas sintakse piešķirs noklusējuma vērtības visiem masīva elementiem atbilstoši norādītajam datu tipam.
Tālāk ir aprakstītas dažādas pieejas 2D masīvu inicializēšanai:

1. pieeja:

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>]);> >}> }>

>

>

Piezīme: Inicializējot 2D masīvu, vienmēr ir jānorāda pirmā dimensija (rindu skaits), bet otrās dimensijas (kolonnu skaits) norādīšana var tikt izlaista.

Tālāk esošajā koda fragmentā mēs neesam norādījuši kolonnu skaitu. Tomēr Java kompilators ir pietiekami gudrs, lai manipulētu ar izmēru, pārbaudot elementu skaitu kolonnās.

lasot csv failu java

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>][];> >}> }>

>

>

Varat piekļūt jebkuram 2D ​​masīva elementam, izmantojot rindu numurus un kolonnu numurus.

2. pieeja:

Tālāk esošajā koda fragmentā mēs neesam norādījuši rindu un kolonnu skaitu. Tomēr Java kompilators ir pietiekami gudrs, lai manipulētu ar izmēru, pārbaudot elementu skaitu rindās un kolonnās.

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>]);> >}> }>

>

>

Izvade

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

3. pieeja:

Turklāt mēs varam inicializēt katru masīva elementu atsevišķi. Apskatiet tālāk esošo koda fragmentu:

1nf 2nf 3nf

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));> >}> }>

>

>

Izvade

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]]>

4. pieeja

Iepriekš minētās pieejas izmantošana masīva inicializēšanai būtu nogurdinošs uzdevums, ja 2D masīva izmērs ir pārāk liels. Efektīvs veids ir izmantot cilpu masīva elementu inicializācijai liela 2D masīva gadījumā.

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(); } } }>

>

>

Izvade

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

Piezīme: Mēs varam izmantot arr. garuma funkcija, lai atrastu rindu izmērus (1. dimensija), un funkcija arr[0].length, lai atrastu kolonnu izmērus (2. dimensija).

5. pieeja: (robotaini masīvi)

Var būt noteikts scenārijs, kurā vēlaties, lai katrā rindā būtu atšķirīgs kolonnu skaits. Šāda veida masīvu sauc par robainu masīvu.

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(); } } }>

>

>

Izvade

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

Programma divu 2D masīvu pievienošanai:

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])); } } }>

>

>

Izvade

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