CodeGym /Java Blog /Random-IT /Matrice in Java - Array 2D
John Squirrels
Livello 41
San Francisco

Matrice in Java - Array 2D

Pubblicato nel gruppo Random-IT

Che cos'è una matrice / matrice 2D in Java?

"Una matrice è una raccolta di numeri disposti in un numero fisso di righe e colonne." Di solito questi sono numeri reali. In generale, le matrici possono contenere numeri complessi, ma per semplicità useremo qui solo numeri interi. Diamo un'occhiata a come appare una matrice. Ecco un esempio di matrice con 4 righe e 4 colonne.Matrice in Java - Array 2D - 2
Fig 1: Una semplice matrice 4x4
Per rappresentare questa matrice in Java, possiamo usare un 2 Dimensional Array. Un array 2D prende 2 dimensioni, una per la riga e una per la colonna. Ad esempio, se specifichi un array intero int arr[4][4] , significa che la matrice avrà 4 righe e 4 colonne. Oppure puoi dire che per ogni riga ci saranno 4 colonne. La dimensione/numero totale di celle in una matrice sarà righe*colonne = mxn = 4x4 = 16.Matrice in Java - Array 2D - 3
Fig 2: La matrice[4][4] in Fig 1 rappresentata come Array 2D in Java

Dichiara e inizializza un array 2D

Ecco alcuni modi diversi per dichiarare solo la dimensione dell'array o per inizializzarlo senza menzionare la dimensione.

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

Attraversamento di array 2D

Sappiamo tutti come attraversare array regolari in Java. Anche per gli array 2D non è difficile. Usiamo comunemente cicli 'for' nidificati per questo. Alcuni principianti potrebbero pensarlo come un concetto alieno, ma non appena lo approfondisci sarai in grado di implementarlo con un po' di pratica. Dai un'occhiata al seguente frammento. Visualizza solo il numero di colonne corrispondenti a ciascuna riga per una comprensione approfondita.

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();
	   }
	}
}
Produzione
riga 0: col 0 col 1 col 2 col 3 riga 1: col 0 col 1 col 2 col 3 riga 2: col 0 col 1 col 2 col 3 riga 3: col 0 col 1 col 2 col 3

Come stampare un array 2D in Java?

Dopo aver acquisito familiarità con l'attraversamento di array 2D, diamo un'occhiata ad alcuni modi per stampare array 2D in Java.

Utilizzo del ciclo "for" nidificato

Questo è il modo più semplice per stampare la matrice in 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);
	}
}
Produzione
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

Utilizzo del ciclo "for-each".

Ecco un altro modo per stampare array 2D in Java usando " foreach loop ". Questo è un tipo speciale di ciclo fornito da Java, in cui int[]row eseguirà un ciclo su ogni riga nella matrice. Considerando che, la variabile "elemento" conterrà ogni elemento posizionato all'indice della colonna attraverso la riga.

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

Utilizzando il metodo "Arays.toString ()".

Il metodo Arrays.toString() in Java, converte ogni parametro passato come un singolo array e utilizza il suo metodo integrato per stamparlo. Abbiamo creato un array fittizio String 2D con cui giocare. Lo stesso metodo funziona anche per gli array interi. Ti invitiamo a praticarlo per il tuo esercizio.

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);
	}
}
Produzione
[Ciao, sono Karen] [Sono nuova di Java] [Adoro nuotare] [a volte suono la tastiera]

Codice Spiegazione

Nella prima iterazione, String[]row leggerà "Ciao, sono Karen" come un array, lo convertirà in una stringa e poi lo stamperà. È così che avranno luogo tutte le iterazioni. L'utilità fornita qui è che non devi tenere traccia di alcun indice (i, j) o loop nidificati.

Conclusione

Gli array 2D in Java sono i più semplici degli array multidimensionali. Alla fine di questo articolo speriamo che tu non abbia paura di usarli, piuttosto pronto a rimboccarti le maniche per un lavoro serio. Puoi eseguire tutti questi codici di esempio o eseguire il debug riga per riga secondo la tua convenienza. Ma alla fine, vorremmo avvisare (come sempre) che l'abilità arriva con grande pratica e pazienza. Spero che tu abbia un'esperienza di apprendimento divertente con gli array 2D in Java. Buona fortuna!
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION