Java - Xóa phần tử có giá trị k trong mảng (k nhập từ bàn phím).

Viết chương trình thực hiện các công việc sau: Nhập một mảng có n phần tử nguyên từ bàn phím (n > 0). Sau đó nhập vào số nguyên k và xóa các phần tử trong mảng có giá trị bằng k.

Yêu cầu kỹ thuật: Chương trình phải kiểm tra n nhập vào: nếu n <= 0 thì cho nhập lại số phần tử cho đến khi thỏa mãn điều kiện.

Bài giải

-------------------- ######## --------------------

Bài giải
public static void main(String[] args) {
	int n, i, c;
	Scanner scanner = new Scanner(System.in);
		
	do {
		System.out.println("Nhập vào số phần tử của mảng: ");
		n = scanner.nextInt();
	} while (n <= 0);
		
	int A[] = new int[n];
		
	System.out.println("Nhập các phần tử cho mảng: ");
	for (i = 0; i < n; i++) {
		System.out.print("Nhập phần tử thứ " + i + ": ");
		A[i] = scanner.nextInt();
	}
		
	System.out.println("Nhập số nguyên k: ");
	int k = scanner.nextInt();
		
	// xóa phần tử k ra khỏi mảng
	// vòng lặp for sẽ khởi tạo c = i = 0
	// và duyệt i từ 0 đến n
	// nếu phần tử tại vị trí i khác với số nguyên k 
	// thì gán phần tử tại i cho phần tử tại k
	// sau đó tăng c lên 1
	for (c = i = 0; i < n; i++) {
		if (A[i] != k) {
			A[c] = A[i];
			c++;
		}
	}
		
	n = c;	// lúc này số phần tử trong mảng sẽ bằng c
		
	// hiển thị các phần tử trong mảng sau khi xóa k
	System.out.println("Mảng còn lại sau khi xóa phần tử " + k + " là: ");
	for (i = 0; i < n; i++) {
		System.out.print(A[i] + "\t");
	}
}

Giải thích hoạt động của chương trình trên:

Bước 1: Nhập vào số phần tử của mảng n = 5, các phần tử cho mảng A[0] = 1, A[1] = 2, A[2] = 2, A[3] = 3 và A[4] = 4 và số nguyên k cần xóa = 3.

Bước 2: Thực hiện vòng lặp for: Ban đầu khởi tạo c = i = 0. i = 0 < 5 nên thực hiện các lệnh trong thân vòng lặp, vì A[i] = 1 != 2 nên gán A[c] = A[i] = 1 và tăng c lên 1, lúc này c = 1.

Bước 3: Tăng i lên 1, i = 1 < 5 nên thực hiện các lệnh trong thân vòng lặp, vì A[i] = 2 = 2 nên bỏ qua không thực hiện lệnh trong thân vòng for.

Bước 4: Tăng i lên 1, i = 2 < 5 nên thực hiện các lệnh trong thân vòng lặp, vì A[i] = 2 = 2 nên bỏ qua không thực hiện lệnh trong thân vòng for.

Bước 5: Tăng i lên 1, i = 3 < 5 nên thực hiện các lệnh trong thân vòng lặp, vì A[i] = 3 != 2 nên gán A[c] = A[i] = 3 và tăng c lên 1, lúc này c = 2.

Bước 6: Tăng i lên 1, i = 4 < 5 nên thực hiện các lệnh trong thân vòng lặp, vì A[i] = 4 != 2 nên gán A[c] = A[i] = 4 và tăng c lên 1, lúc này c = 3.

Bước 7: Tăng i lên 1, i = 5 không thỏa mãn điều kiện lặp nên bỏ qua không thực hiện lệnh trong thân vòng for.

Bước 8: Gán n = c, lúc này số phần tử trong mảng = c = 3.

Bước 9: Hiển thị các phần tử còn lại trong mảng là: 1     2     2     4

Kết quả sau khi biên dịch chương trình:

Trở thành Android Developer chuyên nghiệp với 30h học
Bạn muốn trở thành một nhà phát triển mobile app trên nền tảng Android? Vậy thì đây là khóa học rất phù hợp với bạn, chi phí rẻ, học online tại nhà.
XEM NGAY

Nguồn: freetuts.net