logo

Daugiamačiai masyvai Java

Masyvo pagrindai Java Daugiamačiai masyvai paprastais žodžiais galima apibrėžti kaip masyvų masyvą. Duomenys daugiamačiuose masyvuose saugomi lentelės pavidalu (eilės pagrindine tvarka).

Sintaksė:



duomenų tipas [1 dimensija][2 dimensija][]..[N dimensija] masyvo_pavadinimas = naujas duomenų_tipas [dydis1][dydis2]…[dydisN];

kur:

  • duomenų tipas : masyve saugomų duomenų tipas. Pavyzdžiui: int, char ir kt.
  • matmuo : sukurto masyvo matmuo. Pavyzdžiui: 1D, 2D ir kt.
  • masyvo_pavadinimas : masyvo pavadinimas
  • dydis1, dydis2, …, dydisN : atitinkamai matmenų dydžiai.

Pavyzdžiai:



Two dimensional array: int[][] twoD_arr = new int[10][20];  Three dimensional array: int[][][] threeD_arr = new int[10][20][30];>

Daugiamačių masyvų dydis : bendrą elementų, kuriuos galima saugoti daugiamačiame masyve, skaičių galima apskaičiuoti padauginus visų matmenų dydį.

Pavyzdžiui: Masyvas int[][] x = naujas int[10][20] iš viso gali saugoti (10*20) = 200 elementų. Panašiai, masyvas int[][][] x = naujas tarpinis[5][10][20] iš viso gali saugoti (5*10*20) = 1000 elementų.

Daugiamačio masyvo taikymas

● Daugiamačiai masyvai naudojami duomenims saugoti lentelės pavidalu. Pavyzdžiui, mokinio sąrašo numerį ir pažymius galima lengvai išsaugoti naudojant daugiamačius masyvus. Kitas įprastas naudojimas yra vaizdų saugojimas 3D matricose.



● Dinaminio programavimo klausimais naudojami daugiamačiai masyvai, naudojami uždavinio būsenoms pavaizduoti.

● Be šių, jie taip pat gali būti taikomi daugeliui standartinių algoritminių problemų, tokių kaip: matricos daugyba, gretimų matricos vaizdavimas grafikuose, tinklelio paieškos problemos.

Dviejų dimensijų masyvas (2D masyvas)

Dvimatis masyvas yra paprasčiausia daugiamačio masyvo forma. Dviejų matmenų masyvas gali būti laikomas vienmačio masyvo, kad būtų lengviau suprasti.

Netiesioginis deklaravimo būdas:

  • Deklaracija – sintaksė:
  data_type[][] array_name = new data_type[x][y];   For example: int[][] arr = new int[10][20];>
  • Inicijavimas – sintaksė:
  array_name[row_index][column_index] = value;   For example: arr[0][0] = 1;>

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

>

blokuoti youtube skelbimus android
>

Išvestis

arr[0][0] = 1>

Pavyzdys: 2D masyvo įgyvendinimas su numatytomis reikšmėmis su 4*4 matrica

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

>

>

Išvestis

The 2D array is: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16>

Paaiškinimas:

  • Eilučių ir stulpelių skaičius nurodomas naudojant eilučių ir stulpelių kintamuosius. 2D masyvas sukuriamas naudojant naują operatorių, kuris masyvei paskiria atmintį. Masyvo dydis nurodomas eilutėmis ir stulpeliais.

Tiesioginis deklaravimo būdas: Sintaksė:

  data_type[][] array_name = {     {valueR1C1, valueR1C2, ....},      {valueR2C1, valueR2C2, ....}     };   For example: int[][] arr = {{1, 2}, {3, 4}};>

Pavyzdys:

Java




jei pagal rudyard kipling eilutė po eilutės paaiškinimas

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

>

>

Išvestis

arr[0][0] = 1 arr[0][1] = 2 arr[1][0] = 3 arr[1][1] = 4>

Prieiga prie dvimačių masyvų elementų

Dvimačių masyvų elementai paprastai vadinami x[i][j] kur „i“ yra eilutės numeris, o „j“ yra stulpelio numeris.

Sintaksė:

x[row_index][column_index]>

Pavyzdžiui:

int[][] arr = new int[10][20]; arr[0][0] = 1;>

Aukščiau pateiktas pavyzdys vaizduoja elementą, esantį pirmoje eilutėje ir pirmame stulpelyje. Pastaba : Masyvuose, jei masyvo dydis yra N. Jo indeksas bus nuo 0 iki N-1. Todėl 2 eilutės_indekso tikrasis eilutės numeris yra 2+1 = 3. Pavyzdys:

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

>

>

Išvestis

arr[0][0] = 1>

2D masyvo vaizdavimas lentelės formatu:

Dvimatis masyvas gali būti vertinamas kaip lentelė su „x“ eilėmis ir „y“ stulpeliais, kur eilutės numeris svyruoja nuo 0 iki (x-1), o stulpelio numeris – nuo ​​0 iki (y-1). Dviejų dimensijų masyvas „x“ su 3 eilutėmis ir 3 stulpeliais parodytas žemiau:

dviejų d

Spausdinti 2D masyvą lentelės formatu:

Norėdami išvesti visus dvimačio masyvo elementus, naudokite įdėtą kilpoms. Tam reikalingos dvi kilpos, viena eilėms pereiti, kita stulpeliams.

Pavyzdys:

Java




jei dar bash shell
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();> >}> >}> }>

>

>

Išvestis

1 2 3 4>

Pavyzdys: 2D masyvo įgyvendinimas su vartotojo įvestimi

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

>

>

Išvestis

Enter number of rows: 3 Enter number of columns: 3 1 2 3  2 4 6  3 6 9>
  • Šis kodas ragina vartotoją įvesti dvimačio masyvo eilučių ir stulpelių skaičių. Skaitytuvo klasė naudojama vartotojo įvesties skaitymui. Tada sukuriamas dvimatis sveikųjų skaičių masyvas su nurodytu eilučių ir stulpelių skaičiumi ir kiekvienam masyvo elementui priskiriamas i*j.
  • Jei norite sukurti daugiamatį masyvą su daugiau nei dviem matmenimis, galite naudoti tą patį metodą kurdami masyvų masyvą. Pavyzdžiui, norėdami sukurti 3 dimensijų masyvą, galite sukurti 2 dimensijų masyvą.

Trimatis masyvas (3D masyvas)

Trimatis masyvas yra sudėtinga daugiamačio masyvo forma. Trimatis masyvas gali būti vertinamas kaip dviejų matmenų masyvas, kad būtų lengviau suprasti.

Netiesioginis deklaravimo būdas:

  • Deklaracija – sintaksė:
  data_type[][][] array_name = new data_type[x][y][z];   For example: int[][][] arr = new int[10][20][30];>
  • Inicijavimas – sintaksė:
  array_name[array_index][row_index][column_index] = value;   For example: arr[0][0][0] = 1;>

Pavyzdys:

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

>

>

Išvestis

arr[0][0][0] = 1>

Tiesioginis deklaravimo būdas: Sintaksė:

kodėl žymeklio sąsaja java
  data_type[][][] array_name = {     {     {valueA1R1C1, valueA1R1C2, ....},      {valueA1R2C1, valueA1R2C2, ....}     },     {     {valueA2R1C1, valueA2R1C2, ....},      {valueA2R2C1, valueA2R2C2, ....}     }     };   For example: int[][][] arr = { {{1, 2}, {3, 4}}, {{5, 6}, {7, 8}} };>

Pavyzdys:

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

>

>

Išvestis

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>

Prieiga prie trimačių masyvų elementų

Elementai trimačiuose masyvuose paprastai vadinami x[i][j][k] kur „i“ yra masyvo numeris, „j“ yra eilutės numeris ir „k“ yra stulpelio numeris.

Sintaksė:

x[array_index][row_index][column_index]>

Pavyzdžiui:

int[][][] arr = new int[10][20][30]; arr[0][0][0] = 1;>

Aukščiau pateiktame pavyzdyje pavaizduotas elementas, esantis deklaruoto 3D masyvo pirmojo masyvo pirmoje eilutėje ir pirmame stulpelyje.

Pastaba : Masyvuose, jei masyvo dydis yra N. Jo indeksas bus nuo 0 iki N-1. Todėl 2 eilutės_indekso tikrasis eilutės numeris yra 2+1 = 3.

Pavyzdys:

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

>

>

Išvestis

arr[0][0][0] = 1>

3D masyvo vaizdavimas lentelės formatu:

Trimatis masyvas gali būti vertinamas kaip masyvų lentelė su „x“ eilutėmis ir „y“ stulpeliais, kur eilutės numeris svyruoja nuo 0 iki (x-1), o stulpelio numeris svyruoja nuo 0 iki (y-1). Žemiau parodytas trimatis masyvas su 3 masyvu, kuriame yra 3 eilutės ir 3 stulpeliai:

Spausdinkite 3D masyvą lentelės formatu:

Norėdami išvesti visus trimačio masyvo elementus, naudokite įdėtą kilpoms. Tam reikalingos trys kilpos: Vienas – masyvams pereiti, antras – eilėms, o kitas – stulpeliams.

Pavyzdys:

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

>

>

Išvestis

1 2 3 4 5 6 7 8>

Daugiamatio masyvo įterpimas vykdymo metu:

Ši tema vykdymo metu priversta įvesti vartotojo apibrėžtą įvestį į daugiamatį masyvą. Pagrindinis dėmesys skiriamas tam, kad vartotojas vykdymo metu pirmiausia pateiktų visą programos įvestį, o po visų įvestų įvesties programa atitinkamai pateiks išvestį kiekvienos įvesties atžvilgiu. Tai naudinga, kai vartotojas nori įvesti kelis testavimo atvejus su keliomis skirtingomis reikšmėmis, o atlikus visus šiuos dalykus, programa pradės teikti išvestį. Kaip pavyzdį, suraskime bendrą lyginių ir nelyginių skaičių skaičių įvesties masyve. Čia mes naudosime dvimačio masyvo sąvoką.

Štai keli punktai, paaiškinantys įvairių elementų naudojimą būsimame kode:

  • Sveikasis eilutės skaičius laikomas bandomųjų atvejų skaičiumi, o stulpelių reikšmės laikomos vertėmis kiekviename bandomajame atveje.
  • Viena for() kilpa naudojama bandymo atvejo numeriui atnaujinti, o kita for() kilpa naudojama atitinkamoms masyvo reikšmėms paimti.
  • Įvedus visą įvestį, vėlgi du for() kilpos yra naudojamos tuo pačiu būdu programai vykdyti pagal nurodytą sąlygą.
  • Pirmoji įvesties eilutė yra bendras TestCases skaičius.
  • Antroje eilutėje rodomas bendras pirmojo masyvo reikšmių skaičius.
  • Trečioje eilutėje pateikiamos masyvo reikšmės ir pan.

Įgyvendinimas:

Java


begalinis ciklas



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

>

>

Išvestis:

  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>