CodeGym /Java-blogg /Tilfeldig /Matrise i Java - 2D-matriser
John Squirrels
Nivå
San Francisco

Matrise i Java - 2D-matriser

Publisert i gruppen

Hva er en Matrix / 2D Array i Java?

"En matrise er en samling av tall ordnet i et fast antall rader og kolonner." Vanligvis er dette reelle tall. Generelt kan matriser inneholde komplekse tall, men for enkelhets skyld vil vi kun bruke hele tall her. La oss ta en titt på hvordan en matrise ser ut. Her er et eksempel på en matrise med 4 rader og 4 kolonner.Matrise i Java - 2D-matriser - 2
Fig 1: En enkel 4x4 matrise
For å representere denne matrisen i Java, kan vi bruke en 2-dimensjonal matrise. En 2D-array tar 2 dimensjoner, en for raden og en for kolonnen. For eksempel, hvis du spesifiserer en heltallsmatrise int arr[4][4] betyr det at matrisen vil ha 4 rader og 4 kolonner. Eller du kan si for hver rad vil det være 4 kolonner. Den totale størrelsen / antall celler i en matrise vil være rader*kolonner = mxn = 4x4 = 16.Matrise i Java - 2D-matriser - 3
Fig. 2: Matrisen[4][4] i Fig. 1 representert som 2D Array i Java

Erklær og initialiser en 2D-array

Her er noen forskjellige måter å enten bare deklarere størrelsen på matrisen, eller initialisere den uten å nevne 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 vet alle hvordan man krysser vanlige arrays i Java. For 2D-matriser er det heller ikke vanskelig. Vi bruker vanligvis nestede 'for'-løkker for dette. Noen nybegynnere kan tenke på det som et fremmed konsept, men så snart du graver dypere inn i det, vil du kunne implementere dette med litt øvelse. Ta en titt på følgende utdrag. Den viser bare antall kolonner som tilsvarer hver rad 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();
	   }
	}
}
Produksjon
rad 0: col 0 col 1 col 2 col 3 rad 1: col 0 col 1 col 2 col 3 rad 2: col 0 col 1 col 2 col 3 rad 3: col 0 col 1 col 2 col 3

Hvordan skrive ut en 2D-array i Java?

Etter at du er kjent med 2D-array-traversal, la oss se på noen få måter å skrive ut 2D-arrayer på i Java.

Bruker Nested "for" loop

Dette er den mest grunnleggende måten å skrive ut matrisen 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);
	}
}
Produksjon
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

Bruker "for-hver"-løkke

Her er en annen måte å skrive ut 2D-matriser i Java ved å bruke " foreach loop ". Dette er en spesiell type sløyfe levert av Java, hvor int[]raden vil sløyfe gjennom hver rad i matrisen. Mens variabelen "element" vil inneholde hvert element plassert i kolonneindeksen gjennom 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);
	}
}
Produksjon
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

Ved å bruke "Arays.toString()"-metoden

Arrays.toString() -metoden i Java, konverterer hver parameter som sendes til den som en enkelt matrise og bruker den innebygde metoden for å skrive den ut. Vi har laget en dummy String 2D-array for å leke rundt. Den samme metoden fungerer også for heltallsmatriser. Vi oppfordrer deg til å praktisere det for treningen din.

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);
	}
}
Produksjon
[Hei, jeg er Karen] [Jeg er ny på Java] [Jeg elsker å svømme] [noen ganger spiller jeg keyboard]

Kodeforklaring

I den første iterasjonen vil String[]row lese «Hei, jeg er Karen» som en Array, konvertere den til en String og deretter skrive den ut. Det er slik alle iterasjoner vil foregå. Verktøyet som tilbys her er at du ikke trenger å holde styr på noen indekser (i, j) eller nestede løkker.

Konklusjon

2D-matriser i Java er de enkleste av de flerdimensjonale matrisene. Mot slutten av denne artikkelen håper vi at du ikke er redd for å bruke dem, heller klar for å brette opp ermene for seriøst arbeid. Du kan kjøre alle disse prøvekodene eller feilsøke linje for linje etter eget ønske. Men til slutt vil vi gi råd (som alltid) at ferdigheter kommer med god øvelse og tålmodighet. Håper du har en morsom læringserfaring med 2D Arrays i Java. Lykke til!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION