Bài Tập Arraylist Trong Java Có Lời Giải / Top 16 Xem Nhiều Nhất & Mới Nhất 9/2023 # Top Trend | Ictu-hanoi.edu.vn

Vòng Lặp Arraylist Trong Java Với Ví Dụ Cụ Thể

ArrayList là một danh sách các phần tử có cùng kiểu dữ liệu, thế nên việc duyệt vòng lặp trên một ArrayList là rất cần thiết.

Trong bài này mình sẽ giới thiệu các cách sau:

Vòng lặp for

ArrayList chứa phần tử bắt đầu từ vị trí 0 và kết thúc ở vị trí size – 1, với size là số lượng phần tử của mảng. Từ đó chúng ta có thể dễ dàng áp dụng vòng lặp for trên ArrayList như sau.

import java.util.*; public class Main { public static void main(String[] args) { arrays.add(1); arrays.add(2); arrays.add(3); int sum = 0; for (int i = 0; i < arrays.size(); i++) { sum += arrays.get(i); } System.out.println("Sum: " + sum); } }

Output: Sum: 6

Vòng lặp for cải tiến

Nếu nhu cầu của chúng ta đơn thuần là duyệt hết tất cả các phần tử của ArrayList, lúc đó chúng ta thấy rằng biến đếm i thật là vô nghĩa. Chúng ta sẽ có vòng lặp cải tiến sau, không sử dụng biến đếm mà vẫn đảm bảo duyệt tất cả các phần tử từ vị trí 0 đến size – 1.

import java.util.*; public class Main { public static void main(String[] args) { arrays.add(1); arrays.add(2); arrays.add(3); int sum = 0; for(Integer item : arrays) { sum += item; } System.out.println("Sum: " + sum); } }

Output: Sum: 6

Vòng lặp while

Vòng lặp while về cách hoạt tương tự như vòng lặp for. Mình sẽ tiến hành lấy ví dụ luôn nghen.

import java.util.*; public class Main { public static void main(String[] args) { arrays.add(1); arrays.add(2); arrays.add(3); int sum = 0; int index = 0; while (index < arrays.size()) { sum += arrays.get(index); index++; } System.out.println("Sum: " + sum); } }

Output: Sum: 6

Vòng lặp forEach

Một chút lưu ý, đối với vòng lặp forEach, các biến được đặt trong biểu thức lambda phải là các biến final, đều này nghĩa rằng bạn sẽ không tính tổng sum như ở trên được đâu. Vòng lặp forEach sẽ hiệu quả trong việc duyệt ArrayList, thế nhưng nếu tính toán gì đấy thì forEach sẽ không đáp ứng được đâu nghen =).

import java.util.*; public class Main { public static void main(String[] args) { arrays.add(1); arrays.add(2); arrays.add(3); } }

Output: 1 2 3.

Bài Tập Java Có Lời Giải

Bài tập Java có lời giải

Bài này cung cấp cho bạn danh sách các dạng bài tập khác nhau để bạn thực hành khi học java.

1. Bài tập java cơ bản

Trong phần này, bạn phải nắm được các kiến thức về:

Các mệnh đề if-else, switch-case.

Các vòng lặp for, while, do-while.

Các từ khóa break và continue trong java.

Các toán tử trong java.

Mảng (array) trong java.

File I/O trong java.

Xử lý ngoại lệ trong java.

Bài 01:

Viết chương trình tìm tất cả các số chia hết cho 7 nhưng không phải bội số của 5, nằm trong đoạn 10 và 200 (tính cả 10 và 200). Các số thu được sẽ được in thành chuỗi trên một dòng, cách nhau bằng dấu phẩy.

package vn.viettuts.baitap; import java.util.ArrayList; import java.util.List; public class Bai01 { public static void main(String[] args) { for (int i = 10; i < 201; i++) { if ((i % 7 == 0) && (i % 5 != 0)) { list.add(i); } } showList(list); } if (list != null && !list.isEmpty()) { int size = list.size(); for (int i = 0; i < size - 1; i++) { System.out.print(list.get(i) + ", "); } System.out.println(list.get(size - 1)); } } }

Kết quả:

14, 21, 28, 42, 49, 56, 63, 77, 84, 91, 98, 112, 119, 126, 133, 147, 154, 161, 168, 182, 189, 196

Bài 02:

Viết một chương trình tính giai thừa của một số nguyên dương n. Với n được nhập từ bàn phím. Ví dụ, n = 8 thì kết quả đầu ra phải là 1*2*3*4*5*6*7*8 = 40320.

Sử dụng đệ quy hoặc vòng lặp để tính giai thừa.

Code mẫu: sử dụng đệ quy

package vn.viettuts.baitap; import java.util.Scanner; public class GiaiThuaDemo2 { private static Scanner scanner = new Scanner(System.in); /** * main * * @author viettuts.vn * @param args */ public static void main(String[] args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.println("Giai thừa của " + n + " là: " + tinhGiaithua(n)); } /** * tinh giai thua * * @author viettuts.vn * @param n: so nguyen duong * @return giai thua cua so n */ public static long tinhGiaithua(int n) { return n * tinhGiaithua(n - 1); } else { return 1; } } }

Kết quả:

Nhập số nguyên dương n = 8 Giai thừa của 8 là: 40320

Bài 03:

Hãy viết chương trình để tạo ra một map chứa (i, i*i), trong đó i là số nguyên từ 1 đến n (bao gồm cả 1 và n), n được nhập từ bàn phím. Sau đó in map này ra màn hình. Ví dụ: Giả sử số n là 8 thì đầu ra sẽ là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}.

Sử dụng vòng lặp for để lặp i từ 1 đến n.

package vn.viettuts.baitap; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Bai03 { private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); for (int i = 1; i < n + 1; i++) { map.put(i, i * i); } System.out.println(map); } }

Kết quả:

Nhập số nguyên dương n = 10 {1=1, 2=4, 3=9, 4=16, 5=25, 6=36, 7=49, 8=64, 9=81, 10=100}

Bài 04:

Viết chương trình giải phương trình bậc 2: ax2 + bx + c = 0.

package vn.viettuts.baitap; import java.util.Scanner; /** * Giải phương trình bậc 2 * * @author viettuts.vn */ public class PhuongTrinhBac2 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập hệ số bậc 2, a = "); float a = scanner.nextFloat(); System.out.print("Nhập hệ số bậc 1, b = "); float b = scanner.nextFloat(); System.out.print("Nhập hằng số tự do, c = "); float c = scanner.nextFloat(); giaiPTBac2(a, b, c); } /** * Giải phương trình bậc 2: ax2 + bx + c = 0 * * @param a: hệ số bậc 2 * @param b: hệ số bậc 1 * @param c: số hạng tự do */ public static void giaiPTBac2(float a, float b, float c) { if (a == 0) { if (b == 0) { System.out.println("Phương trình vô nghiệm!"); } else { System.out.println("Phương trình có một nghiệm: " + "x = " + (-c / b)); } return; } float delta = b*b - 4*a*c; float x1; float x2; x1 = (float) ((-b + Math.sqrt(delta)) / (2*a)); x2 = (float) ((-b - Math.sqrt(delta)) / (2*a)); System.out.println("Phương trình có 2 nghiệm là: " + "x1 = " + x1 + " và x2 = " + x2); } else if (delta == 0) { x1 = (-b / (2 * a)); System.out.println("Phương trình có nghiệm kép: " + "x1 = x2 = " + x1); } else { System.out.println("Phương trình vô nghiệm!"); } } }

Kết quả:

Nhập hệ số bậc 2, a = 2 Nhập hệ số bậc 1, b = 1 Nhập hằng số tự do, c = -1 Phương trình có 2 nghiệm là: x1 = 0.5 và x2 = -1.0

Bài 05:

Tham khảo bảng ASCII để chuyển đổi kiểu char thành String. Hàm chr(55 + m) trong ví dụ sau:

Nếu m = 10 trả về chuỗi “A”.

Nếu m = 11 trả về chuỗi “B”.

Nếu m = 12 trả về chuỗi “C”.

Nếu m = 13 trả về chuỗi “D”.

Nếu m = 14 trả về chuỗi “E”.

Nếu m = 15 trả về chuỗi “F”.

package vn.viettuts.baitap; import java.util.Scanner; public class ConvertNumber { public static final char CHAR_55 = 55; private static Scanner scanner = new Scanner(System.in); /** * main * * @author viettuts.vn * @param args */ public static void main(String[] args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.println("So " + n + " trong he co so 2 = " + ConvertNumber.convertNumber(n, 2)); System.out.println("So " + n + " trong he co so 16 = " + ConvertNumber.convertNumber(n, 16)); } /** * chuyen doi so nguyen n sang he co so b * * @author viettuts.vn * @param n: so nguyen * @param b: he co so * @return he co so b */ public static String convertNumber(int n, int b) { return ""; } StringBuilder sb = new StringBuilder(); int m; int remainder = n; m = remainder % b; sb.append((char) (CHAR_55 + m)); } else { sb.append(m); } } else { sb.append(remainder % b); } remainder = remainder / b; } return sb.reverse().toString(); } }

Kết quả:

Nhập số nguyên dương n = 15 So 15 trong he co so 2 = 1111 So 15 trong he co so 16 = F

Bài 06:

package vn.viettuts.baitap; import java.util.Scanner; /** * Tính dãy số Fibonacci bằng phương pháp đệ quy * * @author viettuts.vn */ public class FibonacciExample2 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.println(n + " số đầu tiên của dãy số fibonacci: "); for (int i = 0; i < n; i++) { System.out.print(fibonacci(i) + " "); } } /** * Tính số fibonacci thứ n * * @param n: chỉ số của số fibonacci tính từ 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return số fibonacci thứ n */ public static int fibonacci(int n) { if (n < 0) { return -1; return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } }

Kết quả:

Nhập số nguyên dương n = 12 12 số đầu tiên của dãy số fibonacci: 0 1 1 2 3 5 8 13 21 34 55 89

Bài 07:

Viết chương trình tìm ước số chung lớn nhất (USCLN) và bội số chung nhỏ nhất (BSCNN) của hai số nguyên dương a và b nhập từ bàn phím.

package vn.viettuts.baitap; import java.util.Scanner; public class USCLL_BSCNN_1 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập số nguyên dương a = "); int a = scanner.nextInt(); System.out.print("Nhập số nguyên dương b = "); int b = scanner.nextInt(); System.out.println("USCLN của " + a + " và " + b + " là: " + USCLN(a, b)); System.out.println("BSCNN của " + a + " và " + b + " là: " + BSCNN(a, b)); } /** * Tìm ước số chung lớn nhất (USCLN) * * @param a: số nguyên dương * @param b: số nguyên dương * @return USCLN của a và b */ public static int USCLN(int a, int b) { if (b == 0) return a; return USCLN(b, a % b); } /** * Tìm bội số chung nhỏ nhất (BSCNN) * * @param a: số nguyên dương * @param b: số nguyên dương * @return BSCNN của a và b */ public static int BSCNN(int a, int b) { return (a * b) / USCLN(a, b); } }

Kết quả:

Nhập số nguyên dương a = 10 Nhập số nguyên dương b = 24 USCLN của 10 và 24 là: 2 BSCNN của 10 và 24 là: 120

Bài 08:

Viết chương trình liệt kê tất cả các số nguyên tố nhỏ hơn n. Số nguyên dương n được nhập từ bàn phím.

package vn.viettuts.baitap; import java.util.Scanner; /** * Chương trình liệt kê tất cả các số nguyên tố nhỏ hơn n. * * @author viettuts.vn */ public class BaiTap08 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập n = "); int n = scanner.nextInt(); System.out.printf("Tất cả các số nguyên tố nhỏ hơn %d là: n", n); System.out.print(2); } for (int i = 3; i < n; i+=2) { if (isPrimeNumber(i)) { System.out.print(" " + i); } } } /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return true la so nguyen so, * false khong la so nguyen to */ public static boolean isPrimeNumber(int n) { if (n < 2) { return false; } int squareRoot = (int) Math.sqrt(n); for (int i = 2; i <= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } }

Kết quả:

Nhập n = 100 Tất cả các số nguyên tố nhỏ hơn 100 là: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

Bài 09:

Viết chương trình liệt kê n số nguyên tố đầu tiên trong java. Số nguyên dương n được nhập từ bàn phím.

package vn.viettuts.baitap; import java.util.Scanner; /** * Chương trình liệt kê n số nguyên tố đầu tiên. * * @author viettuts.vn */ public class BaiTap09 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập n = "); int n = scanner.nextInt(); System.out.printf("%d số nguyên tố đầu tiên là: n", n); int dem = 0; int i = 2; while (dem < n) { if (isPrimeNumber(i)) { System.out.print(i + " "); dem++; } i++; } } /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return true la so nguyen so, * false khong la so nguyen to */ public static boolean isPrimeNumber(int n) { if (n < 2) { return false; } int squareRoot = (int) Math.sqrt(n); for (int i = 2; i <= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } }

Kết quả:

Nhập n = 10 10 số nguyên tố đầu tiên là: 2 3 5 7 11 13 17 19 23 29

Bài 10:

Viết chương trình liệt kê tất cả số nguyên tố có 5 chữ số trong java.

package vn.viettuts.baitap; /** * Chương trình liệt kê tất cả số nguyên tố có 5 chữ số. * * @author viettuts.vn */ public class BaiTap10 { /** * main * * @param args */ public static void main(String[] args) { int count = 0; System.out.println("Liệt kê tất cả số nguyên tố có 5 chữ số:"); for (int i = 10001; i < 99999; i+=2) { if (isPrimeNumber(i)) { System.out.println(i); count++; } } System.out.println("Tổng các số nguyên tố có 5 chữ số là: " + count); } /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return true la so nguyen so, * false khong la so nguyen to */ public static boolean isPrimeNumber(int n) { if (n < 2) { return false; } int squareRoot = (int) Math.sqrt(n); for (int i = 2; i <= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } }

Kết quả:

Liệt kê tất cả số nguyên tố có 5 chữ số: 10007 10009 10037 ... 99971 99989 99991 Tổng các số nguyên tố có 5 chữ số là: 8363

Bài 11:

Viết chương trình phân tích số nguyên n thành các thừa số nguyên tố trong java. Ví dụ: 100 = 2x2x5x5.

package vn.viettuts.baitap; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * Chương trình phân tích số nguyên n thành các thừa số nguyên tố. * Ví dụ: 12 = 2 x 2 x 3. * * @author viettuts.vn */ public class BaiTap11 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.printf("Kết quả: %d = ", n); int size = listNumbers.size(); for (int i = 0; i < size - 1; i++) { System.out.print(listNumbers.get(i) + " x "); } System.out.print(listNumbers.get(size - 1)); } /** * Phân tích số nguyên thành tích các thừa số nguyên tố * * @param positiveInt * @return */ int i = 2; if (n % i == 0) { n = n / i; listNumbers.add(i); } else { i++; } } if (listNumbers.isEmpty()) { listNumbers.add(n); } return listNumbers; } }

Kết quả:

Nhập số nguyên dương n = 100 Kết quả: 100 = 2 x 2 x 5 x 5

Bài 12:

Viết chương trình tính tổng của các chữ số của môt số nguyên n trong java. Số nguyên dương n được nhập từ bàn phím. Với n = 1234, tổng các chữ số: 1 + 2 + 3 + 4 = 10

package vn.viettuts.baitap; import java.util.Scanner; /** * Chương trình tính tổng của các chữ số của môt số nguyên dương n. * Tổng của các chữ số của 6677 là 6 + 6 + 7 + 7 = 26. * * @author viettuts.vn */ public class BaiTap12 { private static Scanner scanner = new Scanner(System.in); public static int DEC_10 = 10; /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.printf("Tổng của các chữ số " + "của %d là: %d", n, totalDigitsOfNumber(n)); } /** * Tính tổng của các chữ số của một số nguyên dương * * @param n: số nguyên dương * @return */ public static int totalDigitsOfNumber(int n) { int total = 0; do { total = total + n % DEC_10; n = n / DEC_10; return total; } }

Kết quả:

Nhập số nguyên dương n = 6677 Tổng của các chữ số của 6677 là: 26

Bài 13:

Viết chương trình kiểm tra một số n là số thuận nghịch trong java. Số nguyên dương n được nhập từ bàn phím.

package vn.viettuts.baitap; import java.util.Scanner; /** * Chương trình liệt kê tất cả các số thuận nghịch có 6 chữa số. * * @author viettuts.vn */ public class BaiTap13 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.println(n + " là số thuận nghịch: " + isThuanNghich(n)); System.out.print("Nhập số nguyên dương m = "); int m = scanner.nextInt(); System.out.println(n + " là số thuận nghịch: " + isThuanNghich(m)); } /** * Kiểm tra số thuận nghịch * * @param n: số nguyên dương * @return true là số thuận nghịch * false không là số thuận nghịch */ public static boolean isThuanNghich(int n) { String numberStr = String.valueOf(n); int size = numberStr.length(); for (int i = 0; i < (size/2); i++) { if (numberStr.charAt(i) != numberStr.charAt(size - i - 1)) { return false; } } return true; } }

Kết quả:

Nhập số nguyên dương n = 123321 123321 là số thuận nghịch: true Nhập số nguyên dương m = 123451 123321 là số thuận nghịch: false

Bài 14:

Viết chương trình liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố trong java. N là số nguyên dương được nhập từ bàn phím.

package vn.viettuts.baitap; import java.util.Scanner; /** * Chương trình liệt kê các số Fibonacci nhỏ hơn n là số nguyên tố. * Với n được nhập từ bàn phím. * * @author viettuts.vn */ public class BaiTap14 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập số tự nhiên n = "); int n = scanner.nextInt(); System.out.printf("Các số fibonacci nhỏ hơn %d và " + "là số nguyên tố: ", n); int i = 0; while (fibonacci(i) < 100) { int fi = fibonacci(i); if (isPrimeNumber(fi)) { System.out.print(fi + " "); } i++; } } /** * Tính số fibonacci thứ n * * @param n: chỉ số của số fibonacci tính từ 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return số fibonacci thứ n */ public static int fibonacci(int n) { if (n < 0) { return -1; return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return true la so nguyen so, * false khong la so nguyen to */ public static boolean isPrimeNumber(int n) { if (n < 2) { return false; } int squareRoot = (int) Math.sqrt(n); for (int i = 2; i <= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } }

Kết quả:

Nhập số tự nhiên n = 100 Các số fibonacci nhỏ hơn 100 và là số nguyên tố: 2 3 5 13 89

Các bài tập khác:

Viết chương trình nhập số nguyên dương n và thực hiện các chức năng sau: a) Tính tổng các chữ số của n. b) Phân tích n thành tích các thừa số nguyên tố. c) Liệt kê các ước số của n. d) Liệt kê các ước số là nguyên tố của n.

Viết chương trình liệt kệ các số nguyên có từ 5 đến 7 chữ số thảo mãn: a) Là số nguyên tố. b) Là số thuận nghịch. c) Mỗi chữ số đều là số nguyên tố. d) Tổng các chữ số là số nguyên tố.

Viết chương trình liệt kệ các số nguyên có 7 chữ số thảo mãn: a) Là số nguyên tố. b) Là số thuận nghịch. c) Mỗi chữ số đều là số nguyên tố. d) Tổng các chữ số là số thuận nghịch.

2. Bài tập chuỗi trong Java

Danh sách bài tập:

Nhập một sâu ký tự. Đếm số từ của sâu đó (mỗi từ cách nhau bởi một khoảng trắng có thể là một hoặc nhiều dấu cách, tab, xuống dòng). Ví dụ ” hoc java co ban den nang cao ” có 7 từ. Lời giải: Đếm số từ trong một chuỗi.

Nhập một sâu ký tự. Liệt kê số lần xuất hiện của các từ của sâu đó. Lời giải: Liệt kê số lần xuất hiện của các từ trong một chuỗi.

Nhập 2 sâu ký tự s1 và s2. Kiểm tra xem sâu s1 có chứa s2 không? Lời giải: Chuỗi chứa chuỗi trong java.

3. Bài tập mảng trong Java

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 bài học mảng (Array) trong java

Danh sách bài tập:

Nhập một mảng số thực a0, a1, a2, …, an-1. Không dùng thêm mảng số thực nào khác (có thể dùng thêm mảng số nguyên), hãy in ra màn hình mảng trên theo thứ tự tăng dần.

Nhập 2 mảng số thực a0, a1, a2, …, am-1 và b0, b1, b2, …, bn-1. Giả sử 2 mảng này đã được sắp xếp tăng dần. Hãy tận dụng tính sắp xếp của 2 dãy và tạo dãy c0, c1, c2, …, cm+n-1 là hợp của 2 dãy trên sao cho ci cũng có thứ tự tăng dần. Lời giải: Trộn 2 mảng trong java

Viết chương trình nhập vào mảng A có n phần tử, các phần tử là số nguyên lớn hơn 0 và nhỏ hơn 100. Thực hiện các chức năng sau: a) Tìm phần tử lớn thứ nhất và lớn thứ 2 trong mảng với các chỉ số của chúng (chỉ số đầu tiên tìm được). b) Sắp xếp mảng theo thứ tự tăng dần. c) Nhập số nguyên x và chèn x vào mảng A sao cho vẫn đảm bảo tính tăng dần cho mảng A.

Viết chương trình nhập vào ma trận A có n dòng, m cột, các phần tử là số nguyên lớn hơn 0 và nhỏ hơn 100. Thực hiện các chức năng sau: a) Tìm phần tử lớn thứ nhất với chỉ số của nó (chỉ số đầu tiên tìm được). b) Tìm và in ra các phần tử là số nguyên tố của ma trận (các phần tử không nguyên tố thì thay bằng số 0). c) Sắp xếp tất cả các cột của ma trận theo thứ tự tăng dần và in kết quả ra màn hình. d) Tìm cột trong ma trận có nhiều số nguyên tố nhất.

4. Bài tập về các thuật toán sắp xếp trong Java

Bạn có thể xem các giải thuật sắp xếp trong phần cấu trúc dữ liệu và giải thuật: Giải thuật sắp xếp

5. Bài tập java nâng cao

Trong phần này, bạn phải nắm được các kiến thức về:

Lớp và đối tượng trong java.

Access modifier trong java

Các tính chất của lập trình hướng đối tượng (OOP).

Các khái niệm Java OOPs.

Collection trong java.

Xử lý ngoại lệ trong java.

Bài tập quản lý sinh viên trong Java – console

Đề bài: Viết chương trình quản lý sinh viên. Mỗi đối tượng sinh viên có các thuộc tính sau: id, name, age, address và gpa (điểm trung bình). Yêu cầu: tạo ra một menu với các chức năng sau:

/****************************************/ 1. Add student. 2. Edit student by id. 3. Delete student by id. 4. Sort student by gpa. 5. Sort student by name. 6. Show student. 0. Exit. /****************************************/

Lời giải: Bài tập quản lý sinh viên trong java – giao diện dòng lệnh

Bài tập quản lý sinh viên trong Java – Swing

Lời giải: Bài tập quản lý sinh viên trong java bằng Swing

Tổng Hợp Bài Tập Java Có Lời Giải

Để dễ dàng tiếp cận và làm quen với ngôn ngữ lập trình Java. VNCoder sẽ tổng hợp các bài tập thực hành Java mẫu có lời giải chi tiết. Đây là tài liệu tham khảo hữu ích để các bạn luyện tập, thành thạo cú pháp và cấu trúc của ngôn ngữ lập trình Java.

Các mệnh đề if-else, switch-case.

Các vòng lặp for, while, do-while.

Các từ khóa break và continue trong java.

Các toán tử trong java.

Mảng (array) trong java.

File I/O trong java.

Xử lý ngoại lệ trong java.

Các bài tập Java đều có hướng dẫn giải chi tiết, code tham khảo. Các bạn nên tự làm trước, nếu chưa hoàn thành thì có thể tham khảo gõ lại theo code mẫu, như vậy trình độ của các bạn sẽ lên nhanh chóng

Bài Tập Java Cơ Bản Có Lời Giải

bài 4: java giao diện, tạo notoped….

import java.awt.*; import java.awt.event.*; public class myFrame2 extends Frame { MenuBar mb=new MenuBar(); Menu filemenu=new Menu(“file”); MenuItem menuitemNew=new MenuItem(“New Ctrl+N”); MenuItem menuitemOpen=new MenuItem(“Open Ctrl+O”); MenuItem menuitemSave=new MenuItem(“Save Ctrl+S”); MenuItem menuitemSaveAs=new MenuItem(“Save As”); MenuItem menuitemPateSetup=new MenuItem(“Pate Setup”); MenuItem menuitemPrint=new MenuItem(“Print Ctrl+P”); MenuItem menuitemExit=new MenuItem(“Exit”); Menu editmenu=new Menu(“Edit”); MenuItem menuitemUndo=new MenuItem(“Undo Ctrl+Z”); MenuItem menuitemCut=new MenuItem(“Cut Ctrl+X”); MenuItem menuitemCopy=new MenuItem(“Copy Ctrl+C”); MenuItem menuitemPaste=new MenuItem(“Paste Ctrl+V”); MenuItem menuitemDelete=new MenuItem(“Delete Del”); MenuItem menuitemGoto=new MenuItem(“Go to Ctrl+G”); Menu formatmenu=new Menu(“Format”); MenuItem menuitemWordWrap=new MenuItem(“Word Wrap”); MenuItem menuitemFont=new MenuItem(“Font…”); Menu Viewmenu=new Menu(“View”); MenuItem menuitemStatusBar=new MenuItem(“Status Bar”); Menu Helpmenu=new Menu(“Help”); MenuItem menuitemViewhelp=new MenuItem(“View help”); MenuItem menuitemAboutNotepad=new MenuItem(“About Notepad”); public myFrame2(String title) { super(title); this.setMenuBar(mb); mb.add(filemenu); mb.add(editmenu); mb.add(formatmenu); mb.add(Viewmenu); mb.add(Helpmenu); filemenu.add(menuitemNew); filemenu.addSeparator(); filemenu.add(menuitemOpen); filemenu.addSeparator(); filemenu.add(menuitemSave); filemenu.addSeparator(); filemenu.add(menuitemSaveAs); filemenu.addSeparator(); filemenu.add(menuitemPateSetup); filemenu.addSeparator(); filemenu.add(menuitemPrint); filemenu.addSeparator(); filemenu.add(menuitemExit); editmenu.add(menuitemUndo); editmenu.addSeparator(); editmenu.add(menuitemCut); editmenu.addSeparator(); editmenu.add(menuitemCopy); editmenu.addSeparator(); editmenu.add(menuitemPaste); editmenu.addSeparator(); editmenu.add(menuitemDelete); editmenu.addSeparator(); editmenu.add(menuitemGoto); formatmenu.add(menuitemWordWrap); formatmenu.addSeparator(); formatmenu.add(menuitemFont); Viewmenu.add(menuitemStatusBar); Helpmenu.add(menuitemViewhelp); Helpmenu.addSeparator(); Helpmenu.add(menuitemAboutNotepad); }

public static void main(String[] args) { myFrame2 f=new myFrame2(“Unitited – Notoped”); f.setSize(400,400); f.setVisible(true); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } }); } }

Bài Tập Java Cơ Bản, Có Lời Giải Code Mẫu

Để phục vụ nhu cầu học Java của các bạn, Quản Trị Mạng đã tổng hợp lại một số bài tập Java từ nhiều nguồn, có kèm theo code mẫu (cho một số bài). Hy vọng có thể giúp ích cho quá trình học tập ngôn ngữ lập trình Java của các bạn.

Bài tập Java cơ bản có giải

Bài 2. Viết chương trình chuyển đổi một số tự nhiên ở hệ cơ số 10 thành số ở hệ cơ số b bất kì (1< b≤ 36). Xem giải Bài 2

Bài 8. Một số được gọi là số thuận nghịch độc nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Hãy liệt kê tất cả các số thuận nghịch độc có sáu chữ số (Ví dụ số: 558855). Xem giải Bài 8

Bài 9. Viết chương trình liệt kê tất cả các xâu nhị phân độ dài n. Xem giải Bài 9

Bài 10. Viết chương trình liệt kê tất cả các tập con k phần tử của 1, 2, ..,n (k≤n). Xem giải Bài 10

Bài 11. Viết chương trình liệt kê tất cả các hoán vị của 1, 2, .., n. Xem giải Bài 11

Xem giải Bài 12

Bài 13. Nhập số liệu cho 2 dãy số thực a 0, a 1 ,…, a m-1 và b 0 , b 1 ,…, b n-1. Giả sử cả 2 dãy này đã được sắp theo thứ tự tăng dần. Hãy tận dụng tính sắp xếp của 2 dãy và tạo dãy c 0 , c 1 ,…, c m+n-1 là hợp của 2 dãy trên, sao cho dãy c i cũng có thứ tự tăng dần. Xem giải Bài 13

Bài 14. Nhập số liệu cho dãy số thực a 0, a 1,…, a n-1. Hãy liệt kê các phần tử xuất hiện trong dãy đúng một lần. Xem giải Bài 14

Bài 15. Nhập số liệu cho dãy số thực a 0, a 1,…, a n-1. Hãy liệt kê các phần tử xuất hiện trong dãy đúng 2 lần. Xem giải Bài 15

Bài 16. Nhập số liệu cho dãy số thực a 0, a 1,…, a n-1. In ra màn hình số lần xuất hiện của các phần tử. Xem giải Bài 16

Bài 17. Nhập số n và dãy các số thực a 0, a 1,…, a n-1. Không đổi chỗ các phần tử và không dùng thêm mảng số thực nào khác (có thể dùng mảng số nguyên nếu cần) hãy cho hiện trên màn hình dãy trên theo thứ tự tăng dần. Xem giải Bài 17

Bài 18. Nhập một xâu ký tự. Đếm số từ của xâu ký tự đó. Thí dụ ” Trường học ” có 2 từ. Xem giải Bài 18

Bài 19. Viết chương trình liệt kê tất cả các số nguyên tố có 5 chữ số sao cho tổng của các chữ số trong mỗi số nguyên tố đều bằng S cho trước. Xem giải Bài 19

Bài 20. Nhập một số tự nhiên n. Hãy liệt kê các số Fibonaci nhỏ hơn n là số nguyên tố. Xem giải Bài 20

Bài 21. Viết chương trình nhập một số nguyên dương n và thực hiện các chức năng sau:

Tính tổng các chữ số của

Phân tích n thành các thừa số nguyêntố.

Xem giải Bài 21

Bài 22. Viết chương trình nhập một số nguyên dương n và thực hiện các chức năng sau:

Liệt kê các ước số của n. Có bao nhiêu ước số.

Liệt kê các ước số là nguyên tố của

Xem giải Bài 22

Bài 23. Viết chương trình nhập một số nguyên dương n và thực hiện các chức năng sau:

Liệt kê n số nguyên tố đầu tiên.

Liệt kê n số Fibonaci đầu tiên.

Xem giải Bài 23

Bài 24. Viết chương trình nhập vào vào ma trận A có n dòng, m cột, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

Xem giải Bài 24

Bài 25. Viết chương trình liệt kê các số nguyên có từ 5 đến 7 chữ số thoả mãn:

Xem giải bài 25

Bài 26. Viết chương trình liệt kê các số nguyên có 7 chữ số thoả mãn:

Xem giải bài 26

Bài 27. Viết chương trình nhập vào vào mảng A có n phần tử, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

Xem giải bài 27

Bài 28. Viết chương trình nhập vào vào ma trận A có n dòng, m cột, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

Xem giải bài 28

Bài 29. Viết chương trình nhập các hệ số của đa thức P bậc n (0<n<20). Thực hiện các chức năng sau:

Xem giải bài 29

Bài 30. Viết chương trình nhập vào vào mảng A có n phần tử, các phần tử là những số nguyên lớn hơn 0 và nhỏ hơn 100 được nhập vào từ bàn phím. Thực hiện các chức năng sau:

Bài 31. Viết chương trình thực hiện chuẩn hoá một xâu ký tự nhập từ bàn phím (loại bỏ các dấu cách thừa, chuyển ký tự đầu mỗi từ thành chữ hoa, các ký tự khác thành chữ thường)

Xem giải bài 31

Bài 32. Viết chương trình thực hiện nhập một xâu ký tự và tìm từ dài nhất trong xâu đó. Từ đó xuất hiện ở vị trí nào? (Chú ý. nếu có nhiều từ có độ dài giống nhau thì chọn từ đầu tiên tìm thấy).

Xem giải bài 32

Bài 33.Viết chương trình thực hiện nhập một xâu họ tên theo cấu trúc: họ…đệm…tên; chuyển xâu đó sang biểu diễn theo cấu trúc tên…họ…đệm. Xem giải Bài 33

Bài tập Java cơ bản không giải

Bài 34. Viết chương trình liệt kê tất cả các phần tử của tập:

Bài 35. Viết chương trình liệt kê tất cả các phần tử của tập

Bài 36. Viết chương trình liệt kê tất cả các phần tử của tập

Bài 37. Cho hai tập hợp A gồm n phần tử, B gồm m phần tử (n,m≤255), mỗi phần tử của nó là một xâu kí tự.Ví dụ A = {“Lan”, “Hằng”, “Minh”, “Thủy”}, B = {“Nghĩa”, “Trung”, “Minh”, “Thủy”, “Đức”}. Hãy viết chương trình thực hiện những thao tác sau:

Tạo lập dữ liệu cho A và B (từ file hoặc từ bànphím)

Tìm

Tìm

Tìm

Bài 38. Cho hai đa thức

Tạo lập hai đa thức (nhập hệ số cho đa thức từ bàn phím hoặc file)

Tính

Tìm đạo hàm cấp l ≤n của đa thức.

Tìm

Tìm

Tìm

Bài 39. Cho hai ma trận vuông A cấp n. Hãy viết chương trình thực hiện các thao tác sau:

Tìm hàng, cột hoặc đường chéo có tổng các phần tử lớn nhất.

Tìm ma trận chuyển vị của A

Tìm định thức của A

Tìm ma trận nghịch đảo của A

Giải hệ Phương trình tuyến tính thuần nhất n ẩn AX = B bằng phương pháp Gauss

Bài 40. Cho một buffer kí tự gồm n dòng. Hãy viết chương trình thực hiện các thao tác sau:

Tạo lập n dòng văn bản cho buffer.

Đếm số từ trong Buffer.

Tìm tần xuất xuất hiện từ X bất kì trong buffer.

Mã hóa buffer bằng kĩ thuật Parity Bits

Giải mã buffer được mã hóa bằng kĩ thuật parity.

Thay thế từ X bằng từ Y

1. Liệt kê các phần tử của tập

Trong đó b là các số nguyên dương,

2. Liệt kê các phần tử của tập:

trong đó b là các số nguyên dương,

Tính giá trị nhỏ nhất của hàm mục tiêu

Trong đó

4. Tính giá trị nhỏ nhất của hàm mục tiêu

Bài 42. Ma trận nhị phân là ma trận mà các phần tử của nó hoặc bằng 0 hoặc bằng 1. Cho A = [a ij], B = [b ij] là các ma trận nhị phân cấp m × n (i =1, 2,..,m. j= 1, 2, ..,n). Ta định nghĩa các phép hợp, giao, nhân logic và phép lũy thừa cho A và B như sau:

Hợp của A và B, được kí hiệu là A ∨ B là ma trận nhị phân cấp m×n với phần tử ở vị trí (i, j) là aij ∨ bij.

Giao của A và B, được kí hiệu là A ∧ B là ma trận nhị phân cấp m×n với phần tử ở vị trí (i,j) làaij ∧ bij.

Tích boolean của A và B, được kí hiệu là ij = (ai1Ùb1j) Ú (ai2 ∨ b2j) ∨…∨ ( (aik ∨ bkj).

Nếu A là một ma trận vuông nhị phân cấp n và r là một số nguyên dương. Lũy thừa Boolean bậc r của A được kí hiệu là

Hãy viết chương trình thực hiện các thao tác sau:

Cho A = [aij], B = [bij]. Tìm C =A ∨ B

Cho A = [aij], B = [bij]. Tìm C =A ∧ B

Cho A = [aik], B = [bkj]. Tìm C =

Cho A = [aij] tìm Ar.

Lời giải bài tập Java

Bài 1: Bài 02: Bài 03: Bài 04: Bài 05:

Bài 06:

Bài 07:

Bài 08:

package bai08; public class Main { public static boolean testSoThuanNghich(int n){ StringBuilder xau= new StringBuilder(); String str= ""+n; xau.append(str); String check= ""+xau.reverse(); if(str.equals(check)) return true; else return false; } public static void main(String[] args) { int n,count=0; for(n=100000 ; n<= 999999 ; n++){ if(testSoThuanNghich(n)){ System.out.println(n);count++; } } System.out.println("Co "+count+" so thuan nghich co 6 chu so"); }}

Bài 09:

Bài 10:

Bài 11:

Bài 12:

Bài 13:

Bài 14:

Bài 15:

Bài 16:

Bài 17:

Bài 18:

package bai18; import java.util.*; public class Main { public static void main(String[] args) { Scanner input= new Scanner(System.in); System.out.println("Nhap vao 1 xau: "); String str= input.nextLine(); StringTokenizer strToken= new StringTokenizer(str, " "); System.out.println("So cac tu trong xau la: "+strToken.countTokens()); } }

Bài 23: Bài 24: Bài 25: Bài 26: Bài 27: Bài 28: Bài 29: Bài 31:

import java.util.*; public class Bai31 { public static String chuyenInHoa(String str){ String s,strOutput; s= str.substring(0, 1); strOutput= str.replaceFirst(s,s.toUpperCase()); return (strOutput); } public static String chuanHoa(String strInput){ String strOutput=""; StringTokenizer strToken= new StringTokenizer(strInput," ,t,r"); strOutput+=""+chuyenInHoa(strToken.nextToken()); while(strToken.hasMoreTokens()){ strOutput+=" "+chuyenInHoa(strToken.nextToken()); } return(strOutput); } public static void main(String[] args) {

Bài 32:

import java.util.*; public class Bai32 { public static void timXauMax(String strInput){ StringTokenizer strToken= new StringTokenizer(strInput," ,t,r"); int Max,i=1,lengthStr; Max= strToken.nextToken().length(); int viTriMax= i; while(strToken.hasMoreTokens()){ lengthStr= strToken.nextToken().length(); i++; if(Max < lengthStr){ Max= lengthStr; viTriMax= i; } } System.out.println("Do dai xau lon nhat la: "+Max+" o vi tri "+viTriMax); } public static void main(String[] args) {

Bài 33:

import java.util.*;public class Bai33 { public static String doiViTri(String strInput){ String str= Bai31.chuanHoa(strInput); StringTokenizer strToken= new StringTokenizer(str," "); String ho = strToken.nextToken(); String hoDem = strToken.nextToken(); String ten = strToken.nextToken(); String strOutput= ten+" "+ho+" "+hoDem; return(strOutput); } public static void main(String[] args) {

Nguồn: An Nguyễn (toptailieu)