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