CodeGym /Java blogg /Slumpmässig /Matris i Java - 2D-matriser
John Squirrels
Nivå
San Francisco

Matris i Java - 2D-matriser

Publicerad i gruppen

Vad är en Matrix / 2D Array i Java?

"En matris är en samling tal ordnade i ett fast antal rader och kolumner." Vanligtvis är dessa reella tal. Generellt sett kan matriser innehålla komplexa tal men för enkelhetens skull kommer vi bara att använda heltal här. Låt oss ta en titt på hur en matris ser ut. Här är ett exempel på en matris med 4 rader och 4 kolumner.Matrix i Java - 2D Arrays - 2
Fig 1: En enkel 4x4-matris
För att representera denna matris i Java kan vi använda en 2 Dimensional Array. En 2D-array har två dimensioner, en för raden och en för kolumnen. Till exempel, om du anger en heltalsmatris int arr[4][4] betyder det att matrisen kommer att ha 4 rader och 4 kolumner. Eller så kan du säga att det kommer att finnas 4 kolumner för varje rad. Den totala storleken/antalet celler i en matris kommer att vara rader*kolumner = mxn = 4x4 = 16.Matris i Java - 2D-arrayer - 3
Fig 2: Matrisen[4][4] i fig 1 representerad som 2D Array i Java

Deklarera och initiera en 2D-array

Här är några olika sätt att antingen bara deklarera storleken på arrayen eller initiera den utan att nämna storleken.

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 vet alla hur man går igenom vanliga arrayer i Java. För 2D-matriser är det inte svårt heller. Vi använder vanligtvis kapslade 'för'-loopar för detta. Vissa nybörjare kanske tänker på det som ett främmande koncept, men så fort du gräver djupare i det kommer du att kunna implementera detta med lite övning. Ta en titt på följande utdrag. Den visar bara antalet kolumner som motsvarar varje rad för din grundliga förstå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
rad 0 : kol 0 kol 1 kol 2 kol 3 rad 1 : kol 0 kol 1 kol 2 kol 3 rad 2: kol 0 kol 1 kol 2 kol 3 rad 3: kol 0 kol 1 kol 2 kol 3

Hur man skriver ut en 2D-array i Java?

När du är bekant med 2D-array-traversal, låt oss titta på några sätt att skriva ut 2D-arrayer i Java.

Använder kapslad "för" loop

Detta är det mest grundläggande sättet att skriva ut matrisen 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

Använder "for-each" loop

Här är ett annat sätt att skriva ut 2D-arrayer i Java med " foreach loop" . Detta är en speciell typ av loop som tillhandahålls av Java, där int[]raden kommer att gå igenom varje rad i matrisen. Variabeln "element" kommer att innehålla varje element som placeras i kolumnindex genom raden.

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

Använder metoden "Arays.toString()".

Metoden Arrays.toString() i Java, konverterar varje parameter som skickas till den som en enda array och använder dess inbyggda metod för att skriva ut den. Vi har skapat en dummy String 2D-array att leka med. Samma metod fungerar även för heltalsmatriser. Vi uppmuntrar dig att träna på det för 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, jag är Karen] [Jag är ny på Java] [Jag älskar att simma] [ibland spelar jag keyboard]

Kodförklaring

I den första iterationen kommer String[]rad att läsa "Hej, jag är Karen" som en Array, konvertera den till en String och sedan skriva ut den. Det är så alla iterationer kommer att ske. Verktyget som tillhandahålls här är att du inte behöver hålla reda på några index (i, j) eller kapslade loopar.

Slutsats

2D-arrayer i Java är de enklaste av de flerdimensionella arrayerna. I slutet av den här artikeln hoppas vi att du inte är rädd för att använda dem, snarare redo att kavla upp ärmarna för ett seriöst arbete. Du kan köra alla dessa exempelkoder eller felsöka rad för rad som du vill. Men i slutändan skulle vi vilja ge råd (som alltid) att skicklighet kommer med bra övning och tålamod. Hoppas du har en rolig inlärningserfarenhet med 2D Arrays i Java. Lycka till!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION