Bài tập Array trong Java có lời giải
Để củng cố lại kiến thức về mảng, eLib giới thiệu đến bạn một số bài tập về Mảng cơ bản. Các bài tập trong phần này thao tác với mảng một chiều và 2 chiều trong java, bạn có thể tham khảo các bài học trước để thực hành lại. Cùng thử nhé!
1. Bài 1
Đề bài: Viết chương trình Java nhập một mảng số nguyên a0, a1, a2, …, an-1. Liệt kê các phần tử xuất hiện trong mảng đúng 1 lần.\
Lời giải
Trong bài này chúng tôi sử dụng TreeMap để lưu các từ tìm được và số lần xuất hiện của chúng trong mảng đã cho.
File: BaiTap19.java
package vn.eLib.baitap.array;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
/**
* Chương trình liệt kê số lần xuất hiện các phần tử trong một mảng
* nhập từ bàn phím trong java.
*
* @author eLib.vn
*/
public class BaiTap19 {
public static Scanner scanner = new Scanner(System. in );
/**
* main
*
* @param args
*/
public static void main(String[] args) {
System.out.print("Nhập số phần tử của mảng: ");
int n = scanner.nextInt();
// khởi tạo arr
int[] arr = new int[n];
System.out.println("Nhập các phần tử của mảng: ");
for (int i = 0; i < n; i++) {
System.out.printf("a[%d] = ", i);
arr[i] = scanner.nextInt();
}
// tìm số lần xuất hiện của các phần tử
Map < Integer,
Integer > map = new TreeMap < Integer,
Integer > ();
for (int i = 0; i < n; i++) {
addElement(map, arr[i]);
}
System.out.print("Các phần tử xuất hiện 1 lần: ");
for (Integer key: map.keySet()) {
if (map.get(key) == 1) {
System.out.print(key + " ");
}
}
}
/**
* Thêm từ vào map
*
* @param wordMap: map chứa các từ và số lần xuất hiện
* @param sb: từ cần thêm vào wordMap
*/
public static void addElement(Map < Integer, Integer > map, int element) {
if (map.containsKey(element)) {
int count = map.get(element) + 1;
map.put(element, count);
} else {
map.put(element, 1);
}
}
}
Nhập số phần tử của mảng: 6
Nhập các phần tử của mảng:
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 1
a[4] = 2
a[5] = 5
Các phần tử xuất hiện 1 lần: 3 5
2. Bài 2
Đề bài: Viết chương trình nhập một mảng số nguyên a0, a1, a2, …, an-1. Liệt kê số lần xuất hiện của các phần tử trong một mảng đã cho.
Lời giải
Trong bài này chúng tôi sử dụng TreeMap để lưu các từ tìm được và số lần xuất hiện của chúng trong mảng đã cho.
File: BaiTap21.java
package vn.eLib.baitap.array;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
/**
* Chương trình liệt kê số lần xuất hiện các phần tử trong một mảng
* nhập từ bàn phím trong java.
*
* @author viettuts.vn
*/
public class BaiTap21 {
public static Scanner scanner = new Scanner(System. in );
/**
* main
*
* @param args
*/
public static void main(String[] args) {
System.out.print("Nhập số phần tử của mảng: ");
int n = scanner.nextInt();
// khởi tạo arr
int[] arr = new int[n];
System.out.print("Nhập các phần tử của mảng: \n");
for (int i = 0; i < n; i++) {
System.out.printf("a[%d] = ", i);
arr[i] = scanner.nextInt();
}
// tìm số lần xuất hiện của các phần tử
Map < Integer,
Integer > map = new TreeMap < Integer,
Integer > ();
for (int i = 0; i < n; i++) {
addElement(map, arr[i]);
}
System.out.print("Các phần tử xuất hiện 2 lần: \n");
for (Integer key: map.keySet()) {
System.out.printf("%d xuất hiện %d lần.\n", key, map.get(key));
}
}
/**
* Thêm từ vào map
*
* @param wordMap: map chứa các từ và số lần xuất hiện
* @param sb: từ cần thêm vào wordMap
*/
public static void addElement(Map < Integer, Integer > map, int element) {
if (map.containsKey(element)) {
int count = map.get(element) + 1;
map.put(element, count);
} else {
map.put(element, 1);
}
}
}
Kết quả:
Nhập số phần tử của mảng: 10
Nhập các phần tử của mảng:
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 1
a[5] = 2
a[6] = 2
a[7] = 5
a[8] = 6
a[9] = 7
Các phần tử xuất hiện 2 lần:
1 xuất hiện 2 lần.
2 xuất hiện 3 lần.
3 xuất hiện 1 lần.
4 xuất hiện 1 lần.
5 xuất hiện 1 lần.
6 xuất hiện 1 lần.
7 xuất hiện 1 lần.
3. Bài 3
Đề bài: Viết chương trình Java nhập một mảng số nguyên a0, a1, a2, …, an-1. Hãy sắp xếp mảng theo thứ tự tăng dần.
Lời giải
Sau đây là chương trình Java sắp xếp mảng theo thứ tự tăng dần:
File: BaiTap22.java
package vn.eLib.baitap.array;
import java.util.Scanner;
/**
* Chương trình sắp xếp mảng số nguyên theo thứ tự tăng dần.
*
* @author viettuts.vn
*/
public class BaiTap24 {
public static Scanner scanner = new Scanner(System. in );
/**
* main
*
* @param args
*/
public static void main(String[] args) {
System.out.print("Nhập số phần tử của mảng: ");
int n = scanner.nextInt();
// khởi tạo arr
int[] arr = new int[n];
System.out.print("Nhập các phần tử của mảng: \n");
for (int i = 0; i < n; i++) {
System.out.printf("a[%d] = ", i);
arr[i] = scanner.nextInt();
}
// sắp xếp dãy số theo thứ tự tăng dần
sortASC(arr);
System.out.println("Dãy số được sắp xếp tăng dần: ");
show(arr);
}
/**
* sắp xếp mảng số nguyên theo thứ tự tăng dần
*
* @param arr: mảng các số nguyên
* @param n: số phần tử của mảng
*/
public static void sortASC(int[] arr) {
int temp = arr[0];
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
}
/**
* in các phần tử của mảng ra màn hình
*
* @param arr: mảng các số nguyên
* @param n: số phần tử của mảng
*/
public static void show(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
Kết quả:
Nhập số phần tử của mảng: 7
Nhập các phần tử của mảng:
a[0] = 1
a[1] = 2
a[2] = 5
a[3] = 6
a[4] = 3
a[5] = 1
a[6] = 9
Dãy số được sắp xếp tăng dần:
1 1 2 3 5 6 9
4. Bài 4
Đề bài: Viết chương trình Java nhập một mảng số nguyên a0, a1, a2, …, an-1. Hãy sắp xếp mảng theo thứ tự tăng dần, sau đó chèn phần tử k vào mà vẫn đảm bảo mảng là tăng dần.
Lời giải
Chèn phần tử vào mảng trong java.
File: BaiTap24.java
package vn.eLib.baitap.array;
import java.util.Scanner;
/**
* Chương trình sắp xếp mảng theo thứ tự tăng dần,
* sau đó chèn phần tử k vào mà vẫn đảm bảo mảng là tăng dần.
*
* @author eLib.vn
*/
public class BaiTap24 {
public static Scanner scanner = new Scanner(System. in );
/**
* main
*
* @param args
*/
public static void main(String[] args) {
System.out.print("Nhập số phần tử của mảng: ");
int n = scanner.nextInt();
// khởi tạo arr
int[] arr = new int[n];
System.out.print("Nhập các phần tử của mảng: \n");
for (int i = 0; i < n; i++) {
System.out.printf("a[%d] = ", i);
arr[i] = scanner.nextInt();
}
System.out.print("Nhập phần tử k = ");
int k = scanner.nextInt();
// sắp xếp dãy số theo thứ tự tăng dần
sortASC(arr);
System.out.print("Sắp xếp mảng tăng dần: ");
show(arr);
System.out.printf("\nChèn phần tử %d vào mảng.", k);
arr = insert(arr, k);
System.out.print("\nMảng sau khi chèn: ");
show(arr);
}
/**
* sắp xếp mảng số nguyên theo thứ tự tăng dần
*
* @param arr: mảng các số nguyên
*/
public static void sortASC(int[] arr) {
int temp = arr[0];
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
}
/**
* chèn phần tử vào mảng số nguyên tăng dần
* sau khi chèn mảng vẫn duy trì thứ tự tăng dần
*
* @param arr: mảng số nguyên tăng dần
* @param k: phần tử chèn vào mảng arr
*/
public static int[] insert(int[] arr, int k) {
int arrIndex = arr.length - 1;
int tempIndex = arr.length;
int[] tempArr = new int[tempIndex + 1];
boolean inserted = false;
for (int i = tempIndex; i >= 0; i--) {
if (arrIndex > -1 && arr[arrIndex] > k) {
tempArr[i] = arr[arrIndex--];
} else {
if (!inserted) {
tempArr[i] = k;
inserted = true;
} else {
tempArr[i] = arr[arrIndex--];
}
}
}
return tempArr;
}
/**
* in các phần tử của mảng ra màn hình
*
* @param arr: mảng các số nguyên
*/
public static void show(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
Kết quả:
Nhập số phần tử của mảng: 5
Nhập các phần tử của mảng:
a[0] = 2
a[1] = 3
a[2] = 4
a[3] = 5
a[4] = 6
Nhập phần tử k = 1
Sắp xếp mảng tăng dần: 2 3 4 5 6
Chèn phần tử 1 vào mảng.
Mảng sau khi chèn: 1 2 3 4 5 6
Trên đây là 4 bài tập cơ bản về mảng trong Java mà eLib muốn giới thiệu đến bạn. Có rất nhiều cách giải và còn rất nhiều dạng bài tập liên quan đến chuỗi, bạn có thể tham khảo trên các bài viết của eLib. Chúc các bạn thành công!
Tham khảo thêm
- doc Bài tập tự luận java cơ bản có lời giải
- docx Câu hỏi trắc nghiệm ôn tập Java cơ bản
- docx Ngân hàng câu hỏi trắc nghiệm Java có đáp án
- doc Bài tập String trong Java có lời giải
- doc Bài tập về các thuật toán sắp xếp trong Java có lời giải
- doc Bài tập tự luận Java nâng cao có lời giải