Tổng Hợp Bài Tập Java Cơ Bản Có Lời Giải Code Mẫu, 200 Bài Tập Java Cơ Bản Có Lời Giải Chi Tiết

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.

*

Note: Trước khi xem lời giải thì các bạn hãy tự làm trước nhé và hãy common hóa (phân tách thành phương thức riêng) những gì có thể sử dụng lại được.

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.

Gợi ý:

Sử dụng vòng lặp for

Sử dụng vòng lặp for

Code mẫu:

package vn.reset1010.com.baitap;import java.util.ArrayList;import java.util.List;public class Bai01 { public static void main(String<> args) { List list = new ArrayList(); for (int i = 10; i list) { if (list != null && !list.isEmpty()) { int size = list.size(); for (int i = 0; i
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.

Gợi ý:

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

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

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

package vn.reset1010.com.baitap;import java.util.Scanner;public class GiaiThuaDemo2 { private static Scanner scanner = new Scanner(System.in); /** * main * *
author reset1010.com *
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 reset1010.com *
param n: so nguyen duong *
return giai thua cua so n */ public static long tinhGiaithua(int n) { if (n > 0) { return n * tinhGiaithua(n – 1); } else { return 1; } }}
Kết quả:

Nhập số nguyên dương n = 8Giai 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}.

Gợi ý:

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

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

Code mẫu:

package vn.reset1010.com.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(); Map map = new HashMap(); for (int i = 1; i
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.

Code mẫu:

package vn.reset1010.com.baitap; import java.util.Scanner; /** * Giải phương trình bậc 2 * *
author reset1010.com */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) { // kiểm tra các hệ số 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; } // tính delta float delta = b*b – 4*a*c; float x1; float x2; // tính nghiệm if (delta > 0) { 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 = 2Nhập hệ số bậc 1, b = 1Nhập hằng số tự do, c = -1Phương trình có 2 nghiệm là: x1 = 0.5 và x2 = -1.0
Bài 05:

Viết chương trình chuyển đổi một số tự nhiên ở hệ số 10 thành một số ở hệ cơ số B (1 10 là A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.

Gợi ý:

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”.

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”.

Code mẫu:

package vn.reset1010.com.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 reset1010.com *
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 reset1010.com *
param n: so nguyen *
param b: he co so *
return he co so b */ public static String convertNumber(int n, int b) { if (n 16 ) { return “”; } StringBuilder sb = new StringBuilder(); int m; int remainder = n; while (remainder > 0) { if (b > 10) { m = remainder % b; if (m >= 10) { 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 = 15So 15 trong he co so 2 = 1111So 15 trong he co so 16 = F
Bài 06:

Dãy số Fibonacci được định nghĩa như sau: F0 = 0, F1 = 1, F2 = 1, Fn = F(n-1) + F(n-2) với n >= 2. Ví dụ: 0, 1, 1, 2, 3, 5, 8, … Hãy viết chương trình tìm n số Fibonacci đầu tiên.

Code mẫu:

package vn.reset1010.com.baitap;import java.util.Scanner;/*** Tính dãy số Fibonacci bằng phương pháp đệ quy* *
author reset1010.com*/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
Kết quả:

Nhập số nguyên dương n = 1212 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.

Gợi ý:

Code mẫu:

package vn.reset1010.com.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(); // tính USCLN của a và b System.out.println(“USCLN của ” + a + ” và ” + b + ” là: ” + USCLN(a, b)); // tính BSCNN của a và 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 = 10Nhập số nguyên dương b = 24USCLN của 10 và 24 là: 2BSCNN 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.

Bạn đang xem: Bài tập java cơ bản có lời giải

Code mẫu:

package vn.reset1010.com.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 reset1010.com */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); if (n >= 2) { System.out.print(2); } for (int i = 3; i = 2 int squareRoot = (int) Math.sqrt(n); for (int i = 2; i
Kết quả:

Nhập n = 100Tấ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.

Code mẫu:

package vn.reset1010.com.baitap; import java.util.Scanner; /** * Chương trình liệt kê n số nguyên tố đầu tiên. * *
author reset1010.com */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; // đếm số số nguyên tố int i = 2; // tìm số nguyên tố bắt dầu từ số 2 while (dem = 2 int squareRoot = (int) Math.sqrt(n); for (int i = 2; i
Kết quả:

Nhập n = 1010 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.

Code mẫu:

package vn.reset1010.com.baitap; /** * Chương trình liệt kê tất cả số nguyên tố có 5 chữ số. * *
author reset1010.com */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 = 2 int squareRoot = (int) Math.sqrt(n); for (int i = 2; i
Kết quả:

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.

Code mẫu:

package vn.reset1010.com.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 reset1010.com */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(); // phân tích số nguyên dương n List listNumbers = phanTichSoNguyen(n); // in kết quả ra màn hình System.out.printf(“Kết quả: %d = “, n); int size = listNumbers.size(); for (int i = 0; i phanTichSoNguyen(int n) { int i = 2; List listNumbers = new ArrayList(); // phân tích while (n > 1) { if (n % i == 0) { n = n / i; listNumbers.add(i); } else { i++; } } // nếu listNumbers trống thì add n vào listNumbers if (listNumbers.isEmpty()) { listNumbers.add(n); } return listNumbers; }}
Kết quả:

Nhập số nguyên dương n = 100Kế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

Code mẫu:

package vn.reset1010.com.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 reset1010.com */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; } while (n > 0); return total; }}
Kết quả:

Nhập số nguyên dương n = 6677Tổ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.

Code mẫu:

package vn.reset1010.com.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 reset1010.com */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) { // chuyển đổi số n thành một chuỗi String String numberStr = String.valueOf(n); // kiểm tra tính thuận nghịch int size = numberStr.length(); for (int i = 0; i
Kết quả:

Nhập số nguyên dương n = 123321123321 là số thuận nghịch: trueNhập số nguyên dương m = 123451123321 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.

Code mẫu:

package vn.reset1010.com.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 reset1010.com */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) = 2 int squareRoot = (int) Math.sqrt(n); for (int i = 2; i
Kết quả:

Nhập số tự nhiên n = 100Cá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.

Xem thêm:

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

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.Xem thêm: Lý Thuyết Xiêm Giữa Thế Kỷ 19- Đầu Thế Kỷ 20, Lý Thuyết: Xiêm Giữa Thế Kỉ Xix

Danh sách bài tập:

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. 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

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. 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.

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

Dưới đây là tổng hợp một số bài tập thuật toán sắp xếp trong Java:

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./****************************************/

: 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

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