CodeGym /Java blog /Véletlen /Mátrix Java nyelven – 2D tömbök
John Squirrels
Szint
San Francisco

Mátrix Java nyelven – 2D tömbök

Megjelent a csoportban

Mi az a mátrix / 2D tömb a Java nyelven?

"A mátrix számok gyűjteménye, amelyek meghatározott számú sorokba és oszlopokba vannak rendezve." Általában ezek valós számok. Általában a mátrixok tartalmazhatnak komplex számokat, de az egyszerűség kedvéért itt csak egész számokat használunk. Nézzük meg, hogyan néz ki egy mátrix. Íme egy példa egy 4 sorból és 4 oszlopból álló mátrixra.Mátrix Java nyelven – 2D tömbök – 2
1. ábra: Egy egyszerű 4x4-es mátrix
Ennek a mátrixnak a Java nyelven történő megjelenítéséhez használhatunk egy 2 dimenziós tömböt. A 2D tömb 2 dimenziót foglal magában, egyet a sorhoz és egyet az oszlophoz. Például, ha egy egész szám tömböt ad meg int arr[4][4], akkor ez azt jelenti, hogy a mátrixnak 4 sora és 4 oszlopa lesz. Vagy azt is mondhatja, hogy minden sorhoz 4 oszlop tartozik. A mátrixban a cellák teljes mérete/száma sorok*oszlopok = mxn = 4x4 = 16 lesz .Mátrix Java nyelven – 2D tömbök – 3
2. ábra: A mátrix[4][4] az 1. ábrán 2D tömbként van ábrázolva Java nyelven

2D tömb deklarálása és inicializálása

Íme néhány módszer, amellyel vagy csak a tömb méretét deklarálhatod, vagy inicializálhatod a méret említése nélkül.

public class Matrices {

	public static void main(String[] args) {

		// declare & initialize 2D arrays for int and string
		int[][] matrix1 = new int[2][2];
		int matrix2[][] = new int[2][3];
           
           //the size of matrix3 will be 4x4
		int[][] matrix3 = { { 3, 2, 1, 7 }, 
					   { 9, 11, 5, 4 }, 
					   { 6, 0, 13, 17 }, 
					   { 7, 21, 14, 15 } };

		String[][] matrix4 = new String[2][2];

           //the size of matrix5 will be 2x3 
           // 3 cols because at max there are 3 columns
		String[][] matrix5 = { { "a", "lion", "meo" },  
				            { "jaguar", "hunt" } };
	}
}

2D tömb bejárás

Mindannyian tudjuk, hogyan kell bejárni a szabályos tömböket Java nyelven. 2D-s tömböknél ez sem nehéz. Ehhez általában beágyazott „for” ciklusokat használunk. Egyes kezdők talán idegen fogalomnak gondolják, de amint mélyebbre ásol benne, némi gyakorlással meg is tudod valósítani. Tekintse meg a következő részletet. Csak az egyes soroknak megfelelő oszlopok számát jeleníti meg az Ön alapos megértése érdekében.

public class MatrixTraversal {
	public static void main(String[] args) {

	    int[][] matrix = new int[4][4];
	    for (int i = 0; i < matrix.length; i++) 
	    {   
		 // length returns number of rows
		 System.out.print("row " + i + " : ");		
		 for (int j = 0; j < matrix[i].length; j++) 
		 { 
		    // here length returns # of columns corresponding to current row
		    System.out.print("col " + j + "  ");
		 }
	    System.out.println();
	   }
	}
}
Kimenet
0. sor: 0. oszlop 1. oszlop 2. oszlop 3. sor 1. oszlop: 0. oszlop 1. oszlop 2. oszlop 3. sor 2. sor: 0. oszlop 1. oszlop 2. oszlop 3. 3. sor: 0. oszlop 1. oszlop 2. oszlop 3.

Hogyan nyomtathatunk 2D-s tömböt Java-ban?

Miután megismerte a 2D tömb bejárását, nézzünk meg néhány módszert a 2D tömbök Java nyelven történő nyomtatására.

Beágyazott „for” hurok használata

Ez a legegyszerűbb módja a mátrix nyomtatásának Java nyelven.

public class MatrixTraversal {

    public static void printMatrix(int matrix[][])
    {
        for (int i = 0; i < matrix.length; i++) 
	  {   
	    // length returns number of rows		
	    for (int j = 0; j < matrix[i].length; j++) 
	    { 
	      // here length returns number of columns corresponding to current row
		// using tabs for equal spaces, looks better aligned
		// matrix[i][j] will return each element placed at row ‘i',column 'j'
		System.out.print( matrix[i][j]  + "\t"); 
	     }
	     System.out.println();
	   }
	}
	
	public static void main(String[] args) {

		int[][] matrix = { { 3, 2, 1, 7 }, 
					 { 9, 11, 5, 4 }, 
					 { 6, 0, 13, 17 }, 
					 { 7, 21, 14, 15 } };
		printMatrix(matrix);
	}
}
Kimenet
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

A „for-each” ciklus használata

Íme egy másik módszer a 2D tömbök Java nyelven történő nyomtatására a „ foreach loop ” használatával. Ez a Java által biztosított speciális huroktípus, ahol az int[]sor végigfut a mátrix minden során. Míg az „elem” változó a soron keresztül az oszlopindexben elhelyezett minden elemet tartalmazni fog.

public class MatrixTraversal {

	public static void printMatrix(int matrix[][]){
		for (int [] row : matrix) 
		{   
			// traverses through number of rows		
			for (int element : row) 
			{ 
				// 'element' has current element of row index
				System.out.print( element  + "\t"); 
			}
			System.out.println();
		}
	}
	
	public static void main(String[] args) {

		int[][] matrix = {  { 3, 2, 1, 7 }, 
					  { 9, 11, 5, 4 }, 
					  { 6, 0, 13, 17 }, 
					  { 7, 21, 14, 15 } };
		printMatrix(matrix);
	}
}
Kimenet
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

Az „Arays.toString()” metódus használata

A Java Arrays.toString() metódusa minden neki átadott paramétert egyetlen tömbbé alakít, és a beépített metódusával nyomtatja ki. Létrehoztunk egy dummy String 2D tömböt a játékhoz. Ugyanez a módszer működik egész tömbök esetén is. Javasoljuk, hogy gyakorolja az edzéshez.

import java.util.Arrays;
public class MatrixTraversal {
	public static void printMatrix(String matrix[][]){
	
		for (String[] row : matrix) {
			// convert each row to a String before printing
			System.out.println(Arrays.toString(row));
		}
	}
	
	public static void main(String[] args) {

		String [][] matrix = {  { "Hi, I am Karen" }, 
						{ "I'm new to Java"}, 
						{ "I love swimming" }, 
						{ "sometimes I play keyboard"} };
		printMatrix(matrix);
	}
}
Kimenet
[Szia, Karen vagyok] [Új vagyok a Java-ban] [Imádok úszni] [néha billentyűzök]

Kód magyarázata

Az első iterációban a String[]sor a „Hi, I am Karen” szöveget fogja olvasni tömbként, átalakítja Stringgé, majd kinyomtatja. Így fog lezajlani minden iteráció. Az itt biztosított segédprogram az, hogy nem kell nyomon követnie az indexeket (i, j) vagy a beágyazott ciklusokat.

Következtetés

A Java 2D tömbök a legegyszerűbbek a többdimenziós tömbök közül. Reméljük, hogy cikkünk végére nem félsz használatuktól, inkább készen állsz arra, hogy felgyűröd az ingujjat egy komoly munkához. Ezeket a mintakódokat mindegyiket lefuttathatja, vagy soronként hibakeresést végezhet, ahogyan kényelmes. De a végén szeretnénk azt tanácsolni (mint mindig), hogy a készség nagy gyakorlással és türelemmel jár. Reméljük, szórakoztató tanulási élményben lesz része a Java 2D tömbökkel. Sok szerencsét!
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION