CodeGym /Java blog /Tilfældig /Matrix i Java - 2D Arrays
John Squirrels
Niveau
San Francisco

Matrix i Java - 2D Arrays

Udgivet i gruppen

Hvad er en Matrix / 2D Array i Java?

"En matrix er en samling af tal arrangeret i et fast antal rækker og kolonner." Normalt er disse reelle tal. Generelt kan matricer indeholde komplekse tal, men for nemheds skyld vil vi kun bruge hele tal her. Lad os se på, hvordan en matrix ser ud. Her er et eksempel på en matrix med 4 rækker og 4 kolonner.Matrix i Java - 2D Arrays - 2
Fig 1: En simpel 4x4 matrix
For at repræsentere denne matrix i Java kan vi bruge et 2 Dimensional Array. Et 2D-array tager 2 dimensioner, en til rækken og en til kolonnen. For eksempel, hvis du angiver et heltalsarray int arr[4][4], betyder det, at matrixen vil have 4 rækker og 4 kolonner. Eller du kan sige, at der for hver række vil være 4 kolonner. Den samlede størrelse/antallet af celler i en matrix vil være rækker*kolonner = mxn = 4x4 = 16.Matrix i Java - 2D Arrays - 3
Fig. 2: Matrixen[4][4] i Fig. 1 repræsenteret som 2D Array i Java

Erklær og initialiser et 2D-array

Her er nogle forskellige måder at enten kun erklære størrelsen af ​​arrayet eller initialisere det uden at nævne størrelsen.

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 Array Traversal

Vi ved alle, hvordan man krydser almindelige arrays i Java. For 2D-arrays er det heller ikke svært. Vi bruger almindeligvis indlejrede 'for'-løkker til dette. Nogle begyndere vil måske opfatte det som et fremmed koncept, men så snart du graver dybere ned i det, vil du være i stand til at implementere dette med lidt øvelse. Tag et kig på følgende uddrag. Den viser kun antallet af kolonner, der svarer til hver række for din grundige forståelse.

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();
	   }
	}
}
Produktion
række 0: col 0 col 1 col 2 col 3 række 1: col 0 col 1 col 2 col 3 række 2: col 0 col 1 col 2 col 3 række 3: col 0 col 1 col 2 col 3

Hvordan udskriver man et 2D-array i Java?

Når du er fortrolig med 2D-array-traversal, lad os se på et par måder at udskrive 2D-arrays på i Java.

Brug af Nested "for" loop

Dette er den mest grundlæggende måde at udskrive matrixen på i Java.

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);
	}
}
Produktion
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

Brug af "for-each" loop

Her er en anden måde at udskrive 2D-arrays i Java ved hjælp af " foreach loop ". Dette er en speciel type loop leveret af Java, hvor int[]rækken vil gå gennem hver række i matrixen. Hvorimod variablen "element" vil indeholde hvert element placeret ved kolonneindeks gennem rækken.

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);
	}
}
Produktion
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

Brug af metoden "Arays.toString()".

Arrays.toString() -metoden i Java, konverterer hver parameter, der sendes til den, som en enkelt matrix og bruger dens indbyggede metode til at udskrive den. Vi har lavet en dummy String 2D-array til at lege med. Den samme metode virker også for heltalsarrays. Vi opfordrer dig til at øve det til din træning.

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);
	}
}
Produktion
[Hej, jeg er Karen] [Jeg er ny til Java] [Jeg elsker at svømme] [nogle gange spiller jeg keyboard]

Kodeforklaring

I den første iteration vil String[]row læse "Hej, jeg er Karen" som en Array, konvertere den til en String og derefter udskrive den. Sådan vil alle iterationer foregå. Værktøjet tilvejebragt her er, at du ikke behøver at holde styr på nogen indekser (i, j) eller indlejrede løkker.

Konklusion

2D-arrays i Java er de mest simple af de multidimensionelle arrays. Ved slutningen af ​​denne artikel håber vi, at du ikke er bange for at bruge dem, snarere klar til at smøge ærmerne op til noget seriøst arbejde. Du kan køre alle disse eksempelkoder eller fejlsøge linje for linje, efter din bekvemmelighed. Men i sidste ende vil vi gerne rådgive (som altid), at færdigheder kommer med stor øvelse og tålmodighed. Håber du har det sjovt at lære med 2D Arrays i Java. Held og lykke!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION