CodeGym /Blog Java /Ngẫu nhiên /Ma trận trong Java - Mảng 2D

Ma trận trong Java - Mảng 2D

Xuất bản trong nhóm

Mảng ma trận/2D trong Java là gì?

“Ma trận là một tập hợp các số được sắp xếp thành một số hàng và cột cố định.” Thông thường đây là những số thực. Nói chung, ma trận có thể chứa các số phức nhưng để đơn giản, chúng ta sẽ chỉ sử dụng các số nguyên ở đây. Chúng ta hãy xem một ma trận trông như thế nào. Dưới đây là một ví dụ về ma trận có 4 hàng và 4 cột.Ma trận trong Java - Mảng 2D - 2
Hình 1: Một ma trận 4x4 đơn giản
Để biểu diễn ma trận này trong Java, chúng ta có thể sử dụng Mảng 2 chiều. Mảng 2D có 2 chiều, một cho hàng và một cho cột. Ví dụ: nếu bạn chỉ định một mảng số nguyên int arr[4][4] thì có nghĩa là ma trận sẽ có 4 hàng và 4 cột. Hoặc bạn có thể nói mỗi hàng sẽ có 4 cột. Tổng kích thước/số ô trong ma trận sẽ là hàng*cột = mxn = 4x4 = 16.Ma trận trong Java - Mảng 2D - 3
Hình 2: Ma trận[4][4] trong Hình 1 được biểu diễn dưới dạng Mảng 2D trong Java

Khai báo & Khởi tạo mảng 2D

Dưới đây là một số cách khác nhau để chỉ khai báo kích thước của mảng hoặc khởi tạo nó mà không đề cập đến kích thước.

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

Truyền tải mảng 2D

Chúng ta đều biết cách duyệt qua các mảng thông thường trong Java. Đối với mảng 2D, điều đó cũng không khó. Chúng tôi thường sử dụng các vòng lặp 'for' lồng nhau cho việc này. Một số người mới bắt đầu có thể coi đó là một khái niệm xa lạ, nhưng ngay khi bạn tìm hiểu sâu hơn về nó, bạn sẽ có thể thực hiện điều này bằng một số thực hành. Hãy xem đoạn trích sau đây. Nó chỉ hiển thị số cột tương ứng với mỗi hàng để bạn hiểu tường tận.

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();
	   }
	}
}
đầu ra
hàng 0 : col 0 col 1 col 2 col 3 hàng 1 : col 0 col 1 col 2 col 3 hàng 2 : col 0 col 1 col 2 col 3 hàng 3 : col 0 col 1 col 2 col 3

Làm cách nào để in một mảng 2D trong Java?

Sau khi bạn đã quen với việc truyền tải Mảng 2D, hãy xem xét một số cách in Mảng 2D trong Java.

Sử dụng vòng lặp “for” lồng nhau

Đây là cách cơ bản nhất để in ma trận trong 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);
	}
}
đầu ra
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

Sử dụng vòng lặp “for-each”

Đây là một cách khác để in mảng 2D trong Java bằng cách sử dụng “ vòng lặp foreach ”. Đây là một loại vòng lặp đặc biệt do Java cung cấp, trong đó int[]row sẽ lặp qua từng hàng trong ma trận. Trong khi đó, biến "phần tử" sẽ chứa từng phần tử được đặt ở chỉ mục cột cho đến hàng.

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

Sử dụng phương thức “Arays.toString()”

Phương thức Arrays.toString() trong Java, chuyển đổi mọi tham số được truyền cho nó thành một mảng đơn và sử dụng phương thức tích hợp của nó để in nó. Chúng tôi đã tạo một mảng Chuỗi 2D giả để chơi xung quanh. Phương pháp tương tự cũng hoạt động đối với mảng số nguyên. Chúng tôi khuyến khích bạn thực hành nó cho bài tập của bạn.

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);
	}
}
đầu ra
[Xin chào, tôi là Karen] [Tôi mới sử dụng Java] [Tôi thích bơi lội] [thỉnh thoảng tôi chơi bàn phím]

Giải thích mã

Trong lần lặp đầu tiên, String[]row sẽ đọc “Xin chào, tôi là Karen” dưới dạng một Mảng, chuyển đổi nó thành Chuỗi và sau đó in ra. Đó là cách tất cả các lần lặp lại sẽ diễn ra. Tiện ích được cung cấp ở đây là bạn không phải theo dõi bất kỳ chỉ mục nào (i, j) hoặc các vòng lặp lồng nhau.

Phần kết luận

Mảng 2D trong Java là mảng đơn giản nhất trong các mảng đa chiều. Đến cuối bài viết này, chúng tôi hy vọng bạn không ngại sử dụng chúng mà sẵn sàng xắn tay áo cho một số công việc nghiêm túc. Bạn có thể chạy tất cả các mã mẫu này hoặc gỡ lỗi từng dòng tùy theo sự thuận tiện của bạn. Nhưng cuối cùng, chúng tôi muốn khuyên (như mọi khi) rằng kỹ năng đi kèm với sự luyện tập và kiên nhẫn tuyệt vời. Hy vọng bạn có trải nghiệm học tập thú vị với Mảng 2D trong Java. Chúc may mắn!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION