Savladajte Java dvodimenzionalne nizove za vreme jedne cigarete
„Erge, danas ćemo ukratko proći kroz dvodimenzionalne nizove, prilično su jednostavni.“ rekla mi je Sanmej spustivši telefon.
„Dobro, prvobitno nisam nameravao da ih predajem jer se u praksi ne koriste često i prilično su jednostavni — samo prelazak sa jednodimenzionalnog na dvodimenzionalni niz, nema mnogo toga za reći, pa hajde da ukratko porazgovaramo.“ ugasio sam cigaretu u ruci, dugo izdahnuo dim koji je prošao iznad Sanmej glave i izazvao blagi kašalj (😂)
01. Šta je dvodimenzionalni niz
Dvodimenzionalni niz je tip podatka koji može uskladištiti podatke u više redova i kolona. Sastoji se od niza redova i kolona, i svakom elementu se može pristupiti preko indeksa reda i indeksa kolone. Na primer, dvodimenzionalni niz sa 3 reda i 4 kolone može se predstaviti na sledeći način:
array = [
[a, b, c, d],
[e, f, g, h],
[i, j, k, l]
]U ovom primeru, prvi red ima 4 elementa, drugi red ima 4 elementa, treći red ima 4 elementa, i svaki element ima indeks reda i indeks kolone. Na primer, element array[1][2] je element u 2. redu i 3. koloni, a njegova vrednost je g.
Korišćenjem dvodimenzionalnih nizova se može efikasno uskladištiti i obraditi tabelarni podaci, kao što su matrice, slike, mape itd.
02. Kreiranje dvodimenzionalnog niza
Da biste kreirali dvodimenzionalni niz u Javi, morate navesti tip podataka koji će se čuvati u nizu, zatim dve uglaste zagrade i ime niza.
Sintaksa je prikazana ispod:
data_type[][] array_name;Pogledajmo primer koda.
int[][] oddNumbers = { {1, 3, 5, 7}, {9, 11, 13, 15} };03. Pristup elementima dvodimenzionalnog niza
Možemo koristiti dve uglaste zagrade za pristup elementima u dvodimenzionalnom nizu.
Prva označava niz iz kojeg želimo da pristupimo elementima, dok druga označava indeks elementa kojem želimo da pristupimo.
Poslužimo se primerom da pojednostavimo gorenavedeno objašnjenje:
int[][] oddNumbers = { {1, 3, 5, 7}, {9, 11, 13, 15} };
System.out.println(oddNumbers[0][0]);
// 1U gorenjem primeru, niz oddNumbers sadrži dva niza — {1, 3, 5, 7} i {9, 11, 13, 15}.
Prvi niz — {1, 3, 5, 7} — označava se sa 0.
Drugi niz — {9, 11, 13, 15} — označava se sa 1.
Prvi niz je 0, drugi je 1, treći je 2, i tako dalje.
Dakle, da bismo pristupili elementu u prvom nizu, dodeljujemo 0 prvoj uglastoj zagradi. Pošto pokušavamo da pristupimo prvom elementu u nizu, koristićemo njegov indeks, koji je 0: oddNumbers[0][0].
Razložimo ovo detaljnije.
Ovo je kod za pristup elementu: oddNumbers[?][?].
Stavio sam znak pitanja u obe uglaste zagrade — popunjavamo ih kako budemo napredovali.
Pretpostavimo da želimo da pristupimo elementu u drugom nizu, naš kod će izgledati ovako: oddNumbers[1][?].
Sada želimo da pokušamo pristup jednom od elemenata u drugom nizu ({9, 11, 13, 15}). Kao i kod jednodimenzionalnog niza, svaki element ima indeks koji počinje od nule.
Dakle, da bismo pristupili trećem elementu 13, prosleđujemo njegov broj indeksa drugoj uglastoj zagradi: oddNumbers[1][2].
Pogledajmo sledeći primer:
int[][] oddNumbers = { {1, 3, 5, 7}, {9, 11, 13, 15}, {17, 19, 21, 23} };Naš cilj je da pristupimo broju 21 u trećem nizu. Način pristupa se i dalje predstavlja preko znakova pitanja: oddNumbers[?][?].
Prvo dajemo prvoj oznaci pitanja vrednost koja ukazuje na određeni niz kojem želimo da pristupimo.
Niz 0 => {1, 3, 5, 7}
Niz 1 => {9, 11, 13, 15}
Niz 2 => {17, 19, 21, 23}
Broj koji tražimo nalazi se u trećem nizu, pa je to: oddNumbers[2][?].
Vrednost druge uglaste zagrade će ukazivati na element kojem želimo da pristupimo. Da bismo to uradili, moramo navesti indeks elementa. Evo indeksa u ovom nizu:
17 => indeks 0
19 => indeks 1
21 => indeks 2
23 => indeks 3
Indeks od 21 je 2, pa ga možemo dodati u drugu uglastu zagradu: oddNumbers[2][2]. Kada ovo isprintate u konzolu, biće odštampano 21.
Kod je prikazan ispod:
int[][] oddNumbers = { {1, 3, 5, 7}, {9, 11, 13, 15}, {17, 19, 21, 23} };
System.out.println(oddNumbers[2][2]);
// 21Možete koristiti ugnježdene petlje da iterirate kroz sve elemente dvodimenzionalnog niza. Evo primera:
int[][] oddNumbers = { {1, 3, 5, 7}, {9, 11, 13, 15}, {17, 19, 21, 23} };
for(int i = 0; i < oddNumbers.length; i++){
for(int j = 0; j < oddNumbers[i].length; j++){
System.out.println(oddNumbers[i][j]);
}
}
// 1
// 3
// 5
// 7
// 9
// 11
// 13
// 15
// 17
// 19
// 21
// 23Gorenji kod će isprintati sve elemente niza oddNumbers.
04. Ispis Paskalovog trougla pomoću dvodimenzionalnog niza
„Sanmej, prošli put kada smo učili o jednodimenzionalnim nizovima ostavio sam ti zadatak — da pokušaš da isprintaš Paskalov trougao pomoću dvodimenzionalnog niza. Da li si pokušala?“
„Jesam, pogledaj moj kod.“
import java.util.Scanner;
public class YangHuiTriangle {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Unesite broj redova za ispis: ");
int n = input.nextInt();
printYangHuiTriangle(n);
}
public static void printYangHuiTriangle(int n) {
int[][] triangle = new int[n][n];
for (int i = 0; i < n; i++) {
// Prvi i poslednji broj u svakom redu su 1
triangle[i][0] = 1;
triangle[i][i] = 1;
for (int j = 1; j < i; j++) {
// Ostali brojevi su zbir dva broja iz prethodnog reda
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
}
// Ispis Paskalovog trougla
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(triangle[i][j] + " ");
}
System.out.println();
}
}
}„Ovaj kod koristi dvodimenzionalni niz za čuvanje brojeva u Paskalovom trouglu. Prvo, program traži od korisnika da unese broj redova za ispis, a zatim poziva metod printYangHuiTriangle za generisanje i ispis Paskalovog trougla. U metodi printYangHuiTriangle, program koristi ugnježdenu for petlju za izračunavanje svakog broja u Paskalovom trouglu i čuva rezultat u dvodimenzionalnom nizu triangle. Konačno, program ponovo koristi petlju za iteraciju kroz niz i ispis brojeva Paskalovog trougla.“ pažljivo je objasnila Sanmej.
„O, sjajno, kod je napisen prilično standardno. Znaš da koristiš klasu Scanner za interakciju sa konzolom!“ Videvši ovakav napredak kod Sanmej, nije mogao a da ne ushićeno zaplamti od radosti — učenje ovih dana konačno daje rezultate, zaista je odlično!
Unesite broj redova za ispis: 6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1