Nhập xuất mảng hai chiều trong Java – https://final-blade.com

Bài viết chia sẻ khai báo, nhập xuất mảng hai chiều trong java, thao tác với ma trận số nguyên. Sắp xếp ma trận số nguyên theo cột và một số dạng bài tập ứng dụng khác liên quan.

1. Mảng hai chiều trong Java

Mảng hai chiều trong java là một dạng cấu trúc tài liệu quan trọng. Cấu trúc này thường sử dụng thao tác với những bài toán tương quan đến ma trận và nó sẽ được ứng dụng rất nhiều trong lập trình trong thực tiễn .

Giống với cấu trúc mảng hai chiều của các ngôn ngữ khác, mảng hai chiều java là một mảng trong đó mỗi ô nhớ sẽ có hai chỉ số hàng và cột. Thường một mảng sẽ có dạng kiểu m x n tức là mảng sẽ có m hàng và n cột.

Bạn tưởng tượng cấu trúc mảng sẽ có dạng tương tự như như hình vẽ bên dưới. Đây là miêu tả cấu trúc của ma trận 3 × 3
khai bao mang hai chieu javaThao tác với mảng hai chiều cũng rất quan trọng, cùng mình khám phá ở phần dưới nhé !

2. Cú pháp khai báo mảng hai chiều

Cú pháp khai báo có lẽ là phần được quan tâm nhất nếu như bạn đã nắm được cấu trúc mảng ở các ngôn ngữ khác.
Java có một điểm mạnh đó là mảng hai chiều có thể lưu trữ nhiều loại kiểu dữ liệu khác nhau. Có thể dùng kiểu int, double, string hay một kiểu tự định nghĩa nào đó.

Có hai cú pháp thường dùng : Cách tiên phong là khai báo và cấp bộ nhớ trực tiếp. Cách thứ hai là khai báo sau đó mới cấp bộ nhớ .

Cách 1: + + < tên mảng>[][];
Sau đó mới cấp bộ nhớ: = new [số hàng][số cột];

Cách 2: Khai báo trực tiếp
+ + < tên mảng> = new [số hàng][];

Ví dụ khai báo mảng hai chiều size 4 * 3 :

// Cách 1:
private int A[][];
A= new int [4][3];

// Cách 2:
public int A= new int [4][3];

Vậy là xong phần khai báo, dưới đây đến nhập xuất nhé!

3. Nhập xuất mảng hai chiều trong Java

Nhập mảng trong Java tương đối giống với C/C++, sử dụng 2 vòng lặp for lồng nhau để nhập vào từng giá trị một.
Phương thức nhập mảng:

// nhapInt() là phương thức nhập dữ liệu kiểu từ bàn phím do mình tự viết
void nhapMT() {
		A = new int[soHang][soCot];
		System.out.println("Nhap ma tran "+ soHang +" x"+ soCot);
		for(int i=0;i
Xuất mảng hai chiều cũng tương tự như với nhập. Để cho in ra màn hình thành một ma trận đẹp thì cứ hết một hàng bạn lại cho xuống dòng .
	void xuatMT() {
//		System.out.println("MA TRAN "+ soHang +" x"+ soCot);
		for(int i=0;i

4. Các bài tập thường gặp

Ở đây mình sẽ ví dụ hai dạng bài tập về ma trận số nguyên đó là :
  • Sắp xếp ma trận theo cột
  • Đếm các số nguyên có trong ma trận.
Code sắp xếp :
// Sắp xếp ma trận theo cột theo chiều tăng dần
void sortCotDecrease() {
		int temp;
		for(int a=0;aA[j][a]) {
						temp=A[i][a];
						A[i][a]=A[j][a];
						A[j][a]=temp;
					}
	}

Code đếm những số nguyên tố có trong ma trận

boolean isPrime(int a) {
		if(a <2)
			return false;
		for(int i=2;i<=a/2;i++)
			if(a%i ==0)
				return false;
		return true;
	}
	int countPrime() {
		int amount=0;
		for(int i=0;i

5. Xây dựng lớp MaTran

Lắp ghép các phần trên lại, mình làm hoàn chỉnh thành một bài tập nhỏ:
Xây dựng lớp ma trận với các thuộc tính số hàng, số cột, ma trận A.
Các phương thức: Nhập vào kích thước ma trận, nhập ma trận. In ma trận ra màn hình, sắp xếp ma trận theo cột và đếm số các số nguyên tố có trong mảng.

 /* By admin tailieu.pro
 * https://github.com/duongdinh24
 */
import java.io.DataInputStream;
public class MaTran {
	private int soHang;
	private int soCot;
	private int A[][];
	
	public MaTran() {
		
	}
	
	public MaTran(int soHang, int soCot) {
		this.soHang = soHang;
		this.soCot = soCot;
		A = new int[soHang][soCot];
	}
	int getAij(int i, int j) {
		return A[i][j];
	}
	
	int nhapInt() {
		DataInputStream ip = new DataInputStream(System.in);
		int so;
		try {
			so=Integer.parseInt(ip.readLine());
		}
		catch(Exception e){
			System.out.println("Nhap lai: ");
			so=nhapInt();
		}
		return so;
	}
	void nhapKichThuoc() {
		do {
			System.out.println("Nhap so hang: ");
			soHang=nhapInt();
			if(soHang<=0)
				System.out.println("So hang khong hop le!");
		}
		while(soHang<=0);
		
		do {
			System.out.println("Nhap so cot: ");
			soCot=nhapInt();
			if(soCot<=0)
				System.out.println("So cot khong hop le!");
		}
		while(soCot<=0);
	}
	void nhapMT() {
		A = new int[soHang][soCot];
		System.out.println("Nhap ma tran "+ soHang +" x"+ soCot);
		for(int i=0;iA[j][a]) {
						temp=A[i][a];
						A[i][a]=A[j][a];
						A[j][a]=temp;
					}
	}
	
	boolean isPrime(int a) {
		if(a <2)
			return false;
		for(int i=2;i<=a/2;i++)
			if(a%i ==0)
				return false;
		return true;
	}
	int countPrime() {
		int amount=0;
		for(int i=0;i
Minh họa tác dụng chạy chương trình trên :
nhap xuat mang hai chieu trong java

Trên đây là một chút nội dung cơ bản liên quan đến mảng hai chiều, ma trận số nguyên trong Java.
Bạn có thể tham khảo thêm cách cộng hai ma trận, nhân hai ma trận nhé!

Xem thêm những bài viết về lập trình của mình tại đây. Cảm ơn bạn đã ghé thăm website !