JavaRush /Blog Jawa /Random-JV /Array multidimensi

Array multidimensi

Diterbitake ing grup
Array multidimensi - 1

Apa iku array Jawa siji-dimensi?

Array minangka kumpulan unsur sing padha karo jinis, primitif utawa referensi. Informasi umum babagan array (biasane siji-dimensi) bisa ditemokake ing artikel " Arrays in Java " lan ing kursus JavaRush . Ing artikel iki kita bakal pirembagan bab array sing unsur-unsur array liyane. Array kasebut diarani multidimensional. Array sing unsur-unsur array liyane, yaiku array array, diarani rong dimensi. Ora kabeh basa duwe susunan multidimensi sing disusun kanthi cara iki, nanging ing Jawa kaya ngono.

Java Multidimensional Arrays, General Syntax

Umumé, array multidimensi ing Jawa katon kaya iki:
Data_type[dimension1][dimension2][]..[dimensionN] array_name = new data_type[size1][size2].[sizeN];
Endi Data_typejinis unsur ing array. Bisa primitif utawa referensi (kelas). Jumlah pasangan kurung karo dimensionnang iku ukuran array (ing kasus kita - N). array_name- jeneng larik size1...sizN- jumlah unsur ing saben ukuran larik. Deklarasi array multidimensi:
int[][] twoDimArray; //two-dimensional array
String[][][] threeDimArray; //three-dimensional array
double[][][][][] fiveDimArray; // five-dimensional array
Mbok menawa kabeh iki katon banget abstrak, mula saiki ayo pindhah menyang manifestasi konkrit saka array multidimensi - rong dimensi lan telung dimensi. Kasunyatane, pangembang Jawa kadhangkala nggunakake array rong dimensi, luwih jarang - telung dimensi, lan array sing luwih gedhe arang banget. Paling kamungkinan sampeyan ora bakal nemoni wong-wong mau.

Array multidimensi ing kursus JavaRush

Ing JavaRush, array "biasa" diwiwiti ing level 7 saka pencarian Java Syntax , lan mengko ing kursus kasebut bakal ditemokake luwih saka sepisan. Kadhangkala ing saindhenging kursus sampeyan nemokake masalah sing nglibatake susunan rong dimensi (utawa sing bisa ditanggulangi kanthi bantuan). Susunan rong dimensi uga digunakake ing mesin game bagean khusus " Game ing JavaRush ". Yen sampeyan durung teka, deleng lan gawe game utawa loro. Sarat lan kahanan teka karo instruksi rinci lan bakal nyedhiyani latihan banget ing skills program. Array telung dimensi bisa ditemokake ing game Space Invaders . Liwat kasebut, set pigura kanggo animasi ditemtokake (lan saben pigura kasebut minangka array rong dimensi). Yen sampeyan wis ngrampungake quest JavaSyntax utawa mung yakin karo pemrograman Java, coba tulis versi game klasik sampeyan dhewe.

Apa iku array Jawa loro-dimensi?

Array loro-dimensi ing Jawa minangka array array, yaiku saben sel ngemot referensi kanggo array. Nanging luwih gampang kanggo nampilake ing wangun tabel sing diwenehi nomer baris (dimensi pisanan) lan nomer kolom (dimensi kapindho). Array loro-dimensi ing ngendi kabeh baris nduweni jumlah unsur sing padha diarani persegi panjang.

Deklarasi, nggawe lan miwiti array rong dimensi

Prosedur kanggo ngumumake lan nggawe array rong dimensi meh padha karo kasus siji dimensi:
int[][] twoDimArray = new int[3][4];
Array iki nduweni 3 larik lan 4 kolom. Ukuran array rong dimensi persegi dowo (bisa uga ora persegi dowo, luwih akeh ing ngisor iki), yaiku, jumlah total unsur bisa ditemtokake kanthi nambahake jumlah larik kanthi jumlah kolom. Saiki wis diinisialisasi (diisi) karo nilai standar. Yaiku, nul. Ayo isi karo nilai sing kita butuhake.
twoDimArray[0][0] = 5;//write the value 5 into the cell at the intersection of the zero row and zero column
twoDimArray[0][1] = 7; //write the value 7 into the cell at the intersection of the zero row and the first column
twoDimArray[0][2]  = 3;
twoDimArray[0][3] = 17;
twoDimArray[1][0] = 7;
twoDimArray[1][1] = 0;
twoDimArray[1][2] = 1;
twoDimArray[1][3] = 12;
twoDimArray[2][0] = 8;
twoDimArray[2][1] = 1;
twoDimArray[2][2] = 2;
twoDimArray[2][3] = 3;
Kaya karo array siji-dimensi, sampeyan bisa nindakake prosedur inisialisasi luwih cepet:
int [][] twoDimArray = {{5,7,3,17}, {7,0,1,12}, {8,1,2,3}};
Ing kasus kasebut, kita bakal entuk array rong dimensi kanthi telung larik lan papat kolom, diisi kanthi wilangan bulat. Array multidimensi - 2

Nampilake array rong dimensi ing layar

Cara sing paling logis kanggo nindakake operasi iki yaiku ngasilake unsur garis nol kanthi unsur, banjur kaloro, lan sateruse. Cara sing paling umum kanggo ngasilake array rong dimensi ing Jawa yaiku nggunakake rong puteran nested.
int [][] twoDimArray = {{5,7,3,17}, {7,0,1,12}, {8,1,2,3}};//declared an array and filled it with elements
for (int i = 0; i < 3; i++) {  //go through the lines
            for (int j = 0; j < 4; j++) {//go through the columns
                System.out.print(" " + twoDimArray[i][j] + " "); //output element
            }
            System.out.println();// line wrap for the visual preservation of the tabular form
        }

Output cepet saka array rong dimensi

Cara paling cendhak kanggo nampilake dhaptar unsur array rong dimensi ing layar yaiku nggunakake metode deepToStringkelas Arrays. Tuladha:
int[][] myArray = {{18,28,18},{28,45,90},{45,3,14}};
System.out.printLn(Arrays.deepToString(myArray));
Asil saka program kasebut minangka output ing ngisor iki: [[18, 28, 18], [28, 45, 90], [45, 3, 14]]

"Lengths" saka array rong dimensi

Kanggo entuk dawa array siji-dimensi (yaiku, jumlah unsur ing), sampeyan bisa nggunakake variabel length. Sing, yen kita nemtokake array int a[] = {1,2,3}, banjur operasi a.lengthbali 3. Nanging apa yen kita aplikasi prosedur padha kanggo Uploaded loro-dimensi?
int [][] twoDimArray = {{5,7,3,17}, {7,0,1,12}, {8,1,2,3}};
System.out.println(twoDimArray.length);
Output: 3 Dadi operasi iki ngasilake jumlah larik ing array. Carane njaluk nomer kolom? Yen kita dealing karo susunan loro-dimensi persegi dowo (yaiku, kang kabeh garis padha dawane), banjur kita bisa nggunakake operasi twoDimArray[0].lengthutawa tinimbang unsur nul (utamané garis nol) - sembarang liyane ana. Kita bisa nindakake iki amarga ing Jawa, Uploaded loro-dimensi punika Uploaded saka array, lan unsur nul twoDimArray[0]punika Uploaded dawa 4. Sampeyan bisa mriksa iki dhewe.

Conto nggunakake array rong dimensi: checkerboard

Susunan rong dimensi bisa digunakake kanggo nggawe lapangan rong dimensi sing winates, contone ing game, lan utamane ing catur. Gampang kanggo mikir papan catur minangka susunan rong dimensi. Sampeyan bisa "masang" grafis iki, nanging saiki, ayo kang nemtokake papan catur nggunakake simbol lan output menyang console. Array multidimensi - 3Papan catur sisih kiwa ngisor dicet ireng, sing sabanjure putih, kaya sing ana ing ndhuwur. Dadi, werna ganti saben sampeyan pindhah menyang sel sing ana ing sisih pinggir. Kanggo nyetel pewarnaan catur ora kanthi manual, nanging nggunakake algoritma, sampeyan bisa nggunakake mriksa paritas: yen jumlah indeks baris lan kolom malah utawa nol, sel bakal putih, yen ora bakal ireng. Kanggo mriksa iki, kita nggunakake sisa operator% ing algoritma. Amarga kita ora nggarap grafis, nanging kanthi simbol, kita bakal nuduhake sel putih kanthi huruf W(putih), lan sel ireng karo huruf B(ireng).
//set the chessboard as a two-dimensional array
String [][] chessBoard = new String[8][8];
        for (int i = 0; i< chessBoard.length; i++) {
            for (int j = 0; j < chessBoard[0].length; j++) {
                if ((i + j) % 2 == 0) chessBoard[i][j] = "W";
                else chessBoard[i][j] = "B";
            }
        }
Output saka program iki minangka nderek: WBWBWBWBBWBWBWBWBWBW BWBBWBWBWBWWBWBWBWBBW BWBWBWWBWBWBWBWBWBWB W Kabeh kaya ing papan catur nyata, sampeyan bisa mriksa. Array multidimensi - 4Saiki ayo nulis cara kanggo ngitung sel kanthi bener ora ing basa array, nanging ing basa "catur". Sèl kiwa ngisor ing papan diarani A1, dene ing array kita yaiku chessBoard[7][0]. Ayo kita nggandhengake saben pasangan indeks saka array rong dimensi karo padha karo "catur". Kanggo nindakake iki, kita nggunakake rong garis - " abcdefgh" lan " 87654321" (ing urutan mbalikke - kanggo kesederhanaan, supaya checkerboard 8 cocog karo kolom nul).
public static String chessBoardCoord(int a, int b) {
            String letters = "abcdefgh";
            String numbers = "87654321";
            if ((a > 7)|| (b>7)) return null; //if the number is outside the board, return the default value - null
            else return (Character.toString(letters.charAt(a)) + numbers.charAt(b)); /*charAt - a method with which we extract from the string the element under the passed number, here - under the numbers a and b. Character.toString - a method that converts the received character into a string */
        }
Saiki ayo nampilake ing saben sel ora mung warna, nanging uga nomer, nggunakake metode kasebutchessBoardCoord
String [][] chessBoard = new String[8][8];
        for (int i = 0; i < chessBoard.length; i++) {
            for (int j = 0; j < chessBoard[0].length; j++) {
                if ((i + j) % 2 == 0) chessBoard[i][j] = "W" + chessBoardCoord(j,i);
                else chessBoard[i][j] = "B"+ chessBoardCoord(j,i);
            }
        }

            for (int i = 0; i < chessBoard.length; i++) {
                for (int j = 0; j < chessBoard[0].length; j++) {
                    System.out.print(" " + chessBoard[i][j] + " ");
                }
                System.out.println();
            }
Output program: Wa8 Bb8 Wc8 Bd8 We8 Bf8 Wg8 Bh8 Ba7 Wb7 Bc7 Wd7 Be7 Wf7 Bg7 Wh7 Wa6 Bb6 Wc6 Bd6 We6 Bf6 Wg6 Bh6 Ba5 Wb5 Bc5 Wd5 Be5 Wf5 Bg5 Wh5 Wa4 Bb4 Wc4 Bb4 3 Be3 Wf3 Bg3 Wh3 Wa2 Bb2 Wc2 Bd2 We2 Bf2 Wg2 Bh2 Ba1 Wb1 Bc1 Wd1 Be1 Wf1 Bg1 Wh1 Endi We2tegese kothak putih cacahe e2.

Conto nggunakake array rong dimensi: perkalian matriks

manungsa waé!Conto iki mbutuhake kawruh dhasar babagan matriks. Kene banget sethitik bakal ngandika bab wong-wong mau, lan informasi iki dimaksudaké kanggo wong-wong sing wis sinau, nanging wis rada lali, matriks aritmetika. Nanging, kawruh iki bisa dijupuk saka sumber terbuka, utamane saka artikel ing Wikipedia . Iki minangka conto sing apik babagan nggunakake array rong dimensi, nanging kita bisa nerusake tanpa. Dadi, yen sampeyan ora bisa ngerti saiki saka sudut pandang matematika, lan sampeyan ora pengin nyelidiki, aja lali nglewati conto kasebut. Yen sampeyan wis sinau aljabar linear dhasar, sampeyan bisa uga wis sinau babagan susunan persegi panjang minangka matriks persegi dowo. Array multidimensi - 5Where a11, a12... aNN sawetara nomer. Ing tokoh, matriks ora malah persegi dowo, nanging kothak (jumlah larik padha karo nomer kolom, nanging iki ora tansah cilik). Ing urip nyata, matriks kuwi arang ditemoni, nanging ing program lan ilmu komputer umum banget. Utamane, digunakake ing grafis komputer lan mesin game. Contone, rotasi obyek ing layar menyang sembarang amba bisa diprogram nggunakake matriks rotasi. Ing ruang rong dimensi, matriks rotasi katon kaya mangkene: Array multidimensi - 6Ing endi theta minangka sudut sing kudu diputar obyek. Matriks saka dimensi witjaksono bisa ditambahake kanggo saben liyane, lan tambahan ana unsur-by-unsur (kita nambah unsur karo indeks padha). Nanging operasi perkalian matriks kurang dikenal. Mangkono, matriks bisa ping pingan lan matriks asil bisa dipikolehi mung yen nomer kolom saka matriks pisanan pas karo nomer baris saka kaloro. Matriks asil bakal duwe nomer baris sing padha karo sing pertama lan nomer kolom sing padha karo sing nomer loro. Multiplikasi ditindakake kaya ing ngisor iki. Ayo kita duwe matriks a[l][m]lan b[m][n]. Minangka asil multiplikasi, kita kudu entuk matriks c[l][n]. Kanggo entuk unsur saka c[0][0]matriks produk, sampeyan kudu a[0][0]ngalikake unsur nol saka baris nol saka matriks pisanan karo unsur nol saka matriks kapindho, banjur multiply unsur pisanan saka baris pisanan saka matriks pisanan karo unsur pisanan. saka kolom pisanan matriks kapindho, lan sateruse, sawise kabeh produk sing diasilake ditambahake.

a[0][0]*b[0][0] + a[0][1]*b[1][0] + … + a[0][m-1]*b[m-1][0]
Kanggo entuk unsur kaloro saka baris pisanan saka matriks asil, kita nindakake prosedur sing padha karo baris kapindho

a[1][0]*b[0][0] + a[1][1]*b[0][1] + … + a[0][m-1]*b[m-1][0]
Lan sateruse nganti pungkasaning baris. Banjur kita pindhah menyang baris sabanjure lan baleni prosedur nganti metu saka baris. Sing, kita multiply larik saka matriks pisanan karo kolom saka matriks kapindho. Ing ngisor iki kode kanggo perkalian matriks. Sampeyan bisa nambah karo mriksa kanggo selaras karo kondisi ndhuwur-kasebut ing nomer baris lan kolom.
//declaring two matrices
int [][] twoDimArray1 = {{1,0,0,0},{0,1,0,0},{0,0,0,0}};
int[][] twoDimArray2 = {{1,2,3},{1,1,1},{0,0,0},{2,1,0}};

//matrix multiplication process
int[][]twoDimArray3 = new int [twoDimArray1.length][twoDimArray2[0].length];
        for (int i=0; i<twoDimArray3[0].length; i++)
            for (int j=0; j<twoDimArray3.length; j++)
                for (int k=0; k<twoDimArray1[0].length; k++)
                              twoDimArray3[i][j] = twoDimArray3[i][j] + twoDimArray1[i][k] * twoDimArray2[k][j];

//output on display
        for (int i = 0; i < twoDimArray3.length; i++) {
            for (int j = 0; j < twoDimArray3[0].length; j++) {
                System.out.print(" " + twoDimArray3[i][j] + " ");
            }
            System.out.println();
        }
Program ngasilake asil ing ngisor iki: 1 2 3 1 1 1 0 0 0

Array loro-dimensi non-persegi panjang

Amarga array rong dimensi minangka array array ing Jawa, saben array batin bisa beda-beda. Nalika nggawe array, kita mung bisa nemtokake jumlah larik lan dudu jumlah kolom (yaiku, dawane baris sing padha). Ayo katon ing conto.
//declaring and creating an array, specifying only the number of rows
int [][] twoDimArray = new int[5][];

//initialize the array, filling it with arrays of different lengths
        twoDimArray[0] = new int[]{1, 2, 3, 4, 5};
        twoDimArray[1] = new int[]{1,2,3,4};
        twoDimArray[2] = new int[]{1,2,3};
        twoDimArray[3] = new int[]{1,2};
        twoDimArray[4] = new int[]{1};
//display the resulting non-rectangular two-dimensional array on the screen
        for (int i = 0; i < twoDimArray.length; i++) {
            for (int j = 0; j < twoDimArray[i].length; j++) {
                System.out.print(" " + twoDimArray[i][j] + " ");
            }
            System.out.println();
        }
Output program: 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1 Mangkono, baris nol saka array kita ngemot array {1,2,3,4,5}, lan baris papat ngemot array {1}.

Array telung dimensi ing Jawa

Miturut akal sehat lan logika basa Jawa, array telung dimensi bisa kasebut "array array of arrays" utawa "array sing saben unsur minangka array rong dimensi." Kajaba iku, susunan rong dimensi iki bisa beda-beda. Tuladha:
// create a three-dimensional array consisting of two two-dimensional arrays
int[][][] threeDimArr = new int[2][][];
//create the first 2D array of a 5x2 3D array
        threeDimArr[0] = new int[5][2];
//create a second 2D array of a 1x1 3D array
        threeDimArr[1] = new int[1][1];
Nanging luwih asring ing praktik ana array telung dimensi sing kabeh telung jumlah ditetepake bebarengan, analog saka susunan rong dimensi persegi panjang. Array multidimensi - 7Kaya sing wis kasebut, array telung dimensi utawa luwih jarang digunakake. Nanging, sampeyan bisa program soko menarik karo array 3D. Contone, parkir mobil bertingkat. Saben lantai bisa dianggep minangka array rong dimensi, lan papan parkir bisa dianggep minangka unsur tartamtu saka array telung dimensi. Unsur saka array kasebut bisa diwakili dening jinis booleankanthi nilai palsu yen spasi kasebut bebas lan bener yen spasi kasebut dikuwasani.
//set a boolean three-dimensional array. This car park has 3 floors, each of which can accommodate 2x5 = 10 cars. By default, all cells are empty (false)
boolean[][][] parkingLot = new boolean[3][2][5];
//two cars arrived and parked on the ground floor in cell [1][0] and [1][3]
        parkingLot[0][1][0] = true;
        parkingLot[0][1][3] = true;

//Output the array to the console
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 2; j++) {
                for (int k = 0; k < 5; k++) {
                    System.out.print("arr[" + i + "][" + j + "][" + k + "] = " + parkingLot[i][j][k] + "\t");

                }
                System.out.println();
            }
        }

Array multidimensional ing karya nyata saka programmer Jawa

Ing kasunyatan, umume pangembang Jawa ora kerep nemoni array multidimensi. Nanging, ana sawetara tugas sing struktur data iki cocog banget.

  1. Kanggo tes lan nyetel matriks minangka konstanta kanggo mriksa algoritma tartamtu.
  2. Kadhangkala array multidimensi digunakake kanggo jaringan saraf.
  3. Arsip multidimensi cocok kanggo arsip.
  4. Nggarap gambar.

Masalah sing menarik babagan susunan rong dimensi lan telung dimensi

Sampeyan cukup ngerti babagan array multidimensi ing Jawa lan, yen sampeyan yakin, sampeyan bisa nyoba ngrampungake sawetara masalah ing ngisor iki. Padha ora gampang, nanging menarik. Tic-tac-toe. Nggawe lapangan 3x3, nggawe loro pemain sing dadi giliran. Kaping pisanan, lapangan kosong, lan ing saben lapangan kosong pemain pisanan bisa sijine salib, lan kaloro nul. Pemenang yaiku sing pisanan nglumpukake telung salib utawa telung nol sing disusun ing siji baris, siji kolom utawa diagonal.

Apa maneh kanggo maca

Game Jawa kanggo pamula

Semut Langton . Ana lapangan tartamtu, dipérang dadi sel (array loro-dimensi), dicet ireng utawa putih (bisa diatur dening fungsi acak). "Semut" kanthi acak dumadi ing salah sawijining sel, lan ing saben langkah bisa pindhah ing salah siji saka papat arah menyang sel jejer, kanthi horisontal utawa vertikal. Aturan gerakan semut:
  • Ing kothak ireng, semut kudu nguripake 90 ° ngiwa, ngganti werna sel dadi putih, banjur maju menyang kothak sabanjure.
  • Ing kothak putih, semut nguripake 90° ing sisih tengen lan ngganti werna sel dadi ireng, banjur maju menyang kothak sabanjure.
Tulis cara sing ngetung iterasi ing nomer langkah ndiwenehi posisi awal semut. Lapangan bisa diisi kanthi acak karo nul lan siji (utawa dilambangake karo huruf Wlan B, kaya sing ditindakake ing conto papan catur). Kita uga butuh rong paramèter - posisi horisontal lan vertikal saka semut, uga arah ing langkah iki (lor, kidul, kulon, wétan), nalika standar semut katon lor. Sampeyan bisa nyoba kanggo model kotak Rubik nggunakake susunan telung dimensi. Kubus Rubik standar nduweni 6 pasuryan, lan saben-saben minangka susunan kothak warna telung dimensi Color[][][] rubik = new Color[6][3][3]. Nanging, ngleksanakake kubus Rubik dudu tugas sing ora pati penting.

Bahan sing migunani babagan susunan

Akeh artikel ing JavaRush sing dikhususake kanggo array (utamane siji-dimensi, amarga luwih asring digunakake ing praktik). Pay manungsa waé kanggo wong-wong mau.
  1. Array ing Jawa - babagan array kanggo pamula kanthi conto
  2. Soko Babagan Arrays - Artikel rinci sing apik babagan array
  3. Kelas Arrays lan panggunaane - artikel kasebut nggambarake sawetara metode kelas kasebutArray
  4. Arrays minangka kuliah JavaRush pisanan sing dikhususake kanggo array.
  5. Mbalikake array nol-dawa, ora null - Pengarang Pemrograman Efektif Joshua Bloch ngomong babagan cara ngasilake array kosong sing luwih apik
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION