CodeGym /Blog Java /Aleatoriu /Matrice în Java - Matrice 2D
John Squirrels
Nivel
San Francisco

Matrice în Java - Matrice 2D

Publicat în grup

Ce este o matrice / matrice 2D în Java?

„O matrice este o colecție de numere aranjate într-un număr fix de rânduri și coloane.” De obicei, acestea sunt numere reale. În general, matricele pot conține numere complexe, dar, de dragul simplității, vom folosi aici doar numere întregi. Să aruncăm o privire la cum arată o matrice. Iată un exemplu de matrice cu 4 rânduri și 4 coloane.Matrice în Java - Matrice 2D - 2
Fig 1: O matrice simplă 4x4
Pentru a reprezenta această matrice în Java, putem folosi o matrice 2 Dimensional Array. O matrice 2D are 2 dimensiuni, una pentru rând și una pentru coloană. De exemplu, dacă specificați o matrice întregă int arr[4][4], înseamnă că matricea va avea 4 rânduri și 4 coloane. Sau puteți spune că pentru fiecare rând vor fi 4 coloane. Dimensiunea totală / numărul de celule dintr-o matrice va fi rânduri * coloane = mxn = 4x4 = 16.Matrice în Java - Matrice 2D - 3
Fig 2: Matricea [4][4] din Fig 1 reprezentată ca matrice 2D în Java

Declarați și inițializați o matrice 2D

Iată câteva moduri diferite de a declara doar dimensiunea matricei sau de a o inițializa fără a menționa dimensiunea.

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" } };
	}
}

Traversare matrice 2D

Cu toții știm cum să traversăm matrice obișnuite în Java. Nici pentru matrice 2D nu este greu. În mod obișnuit, folosim bucle „for” imbricate pentru aceasta. Unii începători s-ar putea gândi la el ca la un concept extraterestră, dar de îndată ce veți săpa mai adânc în el, veți putea implementa acest lucru cu puțină practică. Aruncă o privire la următorul fragment. Afișează doar numărul de coloane corespunzător fiecărui rând pentru o înțelegere aprofundată.

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();
	   }
	}
}
Ieșire
rând 0 : col 0 col 1 col 2 col 3 rând 1 : col 0 col 1 col 2 col 3 rând 2 : col 0 col 1 col 2 col 3 rând 3 : col 0 col 1 col 2 col 3

Cum să imprimați o matrice 2D în Java?

După ce vă familiarizați cu traversarea matricei 2D, să ne uităm la câteva moduri de imprimare a matricelor 2D în Java.

Folosind bucla imbricată „for”.

Acesta este cel mai simplu mod de a imprima matricea în 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);
	}
}
Ieșire
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

Folosind bucla „for-each”.

Iată o altă modalitate de a imprima matrice 2D în Java folosind „ bucla foreach ”. Acesta este un tip special de buclă oferit de Java, unde int[]row va trece prin fiecare rând din matrice. În timp ce, variabila „element” va conține fiecare element plasat la indexul coloanei prin rând.

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

Folosind metoda „Arays.toString()”.

Metoda Arrays.toString() în Java, convertește fiecare parametru transmis ca o singură matrice și folosește metoda încorporată pentru a-l imprima. Am creat o matrice String 2D falsă pentru a juca. Aceeași metodă funcționează și pentru matricele întregi. Vă încurajăm să o exersați pentru exercițiul dvs.

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);
	}
}
Ieșire
[Bună, sunt Karen] [Sunt nou în Java] [Îmi place să înot] [Uneori cânt la tastatură]

Explicația codului

În prima iterație, String[]row va citi „Hi, I am Karen” ca un Array, îl va converti într-un String și apoi îl va imprima. Așa vor avea loc toate iterațiile. Utilitarul oferit aici este că nu trebuie să urmăriți niciun index (i, j) sau bucle imbricate.

Concluzie

Matricele 2D din Java sunt cele mai simple dintre matricele multidimensionale. Până la sfârșitul acestui articol, sperăm că nu vă este frică să le folosiți, mai degrabă gata să vă suflecați mânecile pentru o muncă serioasă. Puteți rula toate aceste exemple de coduri sau puteți depana linie cu linie, în funcție de confortul dvs. Dar, în cele din urmă, am dori să vă sfătuim (ca întotdeauna) că abilitate vine cu o mare practică și răbdare. Sper să aveți experiență de învățare distractivă cu 2D Arrays în Java. Noroc!
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION