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
-------------------- ######## --------------------
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ài viết này được đăng tại [free tuts .net]
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:
Câu hỏi thường gặp liên quan:
- Java - Nhập mảng và thực hiện các thao tác trên mảng.
- Java - Sắp xếp mảng tăng dần sử dụng phương pháp nổi bọt (Bubble sort).
- Java - Tìm kiếm một phần tử sử dụng trong mảng sử dụng thuật tìm kiếm nhị phân.
- Java - Kiểm tra mảng một chiều vừa nhập có phải là mảng đối xứng hay không?
- Java - Tìm và in ra màn hình số lượng số nguyên lẻ, số lượng số nguyên chẵn trong mảng.
- Java - Xóa phần tử có giá trị k trong mảng (k nhập từ bàn phím).
- Java - Nhập mảng và thực hiện tách các số chẵn và lẻ trong mảng sang hai mảng khác.
- Java - Tách một nửa đầu của mảng ban đầu sang mảng thứ nhất và nửa còn lại sang mảng thứ hai.
- Java - Viết chương trình hiển thị các phần tử chia hết cho 5 trong mảng.
- Java - Đếm số lần xuất hiện của 1 phần tử được nhập từ bàn phím.
- Java - Bài tập tổng hợp các thao tác trên mảng.
- Java - Viết chương trình nhập mảng sao cho không có phần tử nào trùng nhau.