Nhập danh sách số thực với số lượng tùy ý từ bàn phím sau đó xuất danh sách vừa nhập và tổng của nó

Java - Tính và hiển thị tổng các phần tử của ArrayList.

Viết chương trình nhập vào các phần tử là số double cho 1 ArrayList. Sau đó tính và hiển thị tổng của các phần tử đó ra.

Nhập danh sách số thực với số lượng tùy ý từ bàn phím sau đó xuất danh sách vừa nhập và tổng của nó

Bài giải

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

Bài giải
public static void main(String[] args) { int n; double number, sum = 0; ArrayList arrListDouble = new ArrayList<>(); Scanner scanner = new Scanner(System.in); System.out.println("Nhập vào số phần tử của ArrayList: "); n = scanner.nextInt(); for (int i = 0; i < n; i++) { System.out.print("Nhập phần tử thứ " + i + ": "); number = scanner.nextDouble(); arrListDouble.add(number); } // tính tổng các phần tử của arrListDouble for (double element : arrListDouble) { sum += element; } System.out.println("Tổng của các phần tử trong arrListDouble = " + sum); }

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

Nhập danh sách số thực với số lượng tùy ý từ bàn phím sau đó xuất danh sách vừa nhập và tổng của nó
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Nhập danh sách số thực với số lượng tùy ý từ bàn phím sau đó xuất danh sách vừa nhập và tổng của nó

Câu hỏi thường gặp liên quan:

  • Java - Tìm và hiển thị phần tử lớn nhất trong 1 ArrayList.
  • Java - Viết chương trình tạo 1 ArrayList mới từ 1 ArrayList đã tồn tại.
  • Java - Viết chương trình loại bỏ các phần tử trùng nhau trong 1 ArrayList.
  • Java - Tính và hiển thị tổng các phần tử của ArrayList.
  • Java - Viết chương trình tương tác với 2 ArrayList.

GIÁO TRÌNH JAVA ĐẦY ĐỦ NHẤT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.63 MB, 23 trang )

LAB 1: LÀM QUEN VỚI LẬP TRÌNH JAVA

LAB 1: LÀM QUEN VỚI LẬP TRÌNH JAVA
-------------------MỤC TIÊU:
Kết thúc bài thực hành này bạn có khả năng






Sử dụng được NetBean để tạo 1 dự án
Tạo một lớp chứa phương thức main
Đọc dữ liệu từ bàn phím
Xuất dữ liệu ra màn hình
Sử dụng các hàm toán học từ Math.*

BÀI 1 (2 ĐIỂM)
Viết chương trình cho phép nhập họ và tên sinh viên, điểm trung bình từ bàn
phím sau đó xuất ra màn hình với định dạng: <> <<điểm>> điểm.
HƯỚNG DẪN:
 Chạy NetBean
 Tạo một dự án
 Tạo lớp chứa phương thức public static void main(String[] args){…}
public class Lab1Bai1{
public static void main(String[] args){
}
}
 Viết mã cho main(): Sử dụng Scanner để đọc dữ liệu từ bàn phím
Scanner scanner = new Scanner(System.in);
System.out.print("Họ và tên: ");


String hoTen = scanner.nextLine();
System.out.print("Điểm TB: ");
double diemTB = scanner.nextDouble();
 Sử dụng System.out.print(),System.out.printf() và System.out.println() để
xuất ra màn hình
MOB1012 – LẬP TRÌNH JAVA 1

TRANG 1


LAB 1: LÀM QUEN VỚI LẬP TRÌNH JAVA

System.out.printf(“%s %f điểm”, hoTen, diemTB);
 Chạy ứng dụng

BÀI 2 (2 ĐIỂM)
Viết chương trình nhập từ bàn phím 2 cạnh của hình chữ nhật. Tính và xuất chu vi,
diện tích và cạnh nhỏ của hình chữ nhật.
HƯỚNG DẪN:
 Chu vi = (dai + rong)*2
 Diện tích = dai * rong
 Cạnh nhỏ nhất = Math.min(dai, rong)
BÀI 3 (2 ĐIỂM)
Viết chương trình nhập từ bàn phím cạnh của một khối lập phương. Tính và xuất
thể tích của khối chữ nhật
HƯỚNG DẪN:
 Thể tích lập phương = canh * canh * canh
 Hoặc Math.pow(canh, 3)
BÀI 4 (2 ĐIỂM)
Viết chương trình nhập các hệ số của phương trình bậc 2. Tính delta và xuất căn

delta ra màn hình.
HƯỚNG DẪN:
 Delta = Math.pow(b, 2) – 4 * a * c
 Sử dụng Math.sqrt(delta) để tính căn delta
BÀI 5 (2 ĐIỂM):
Giảng viên cho thêm

MOB1012 – LẬP TRÌNH JAVA 1

TRANG 2


LAB2: KIỂU, TOÁN TỬ, LỆNH IF VÀ SWITCH

LAB 2: KIỂU, TOÁN TỬ, LỆNH IF VÀ SWITCH
MỤC TIÊU:
Kết thúc bài thực hành này bạn có khả năng





Sử dụng thành thạo các loại toán tử
Biết cách xây dựng các loại biểu thức
Sử dụng thành thạo lệnh rẽ nhánh (if)
Sử dụng thành thạo lệnh lựa chọn (switch)

BÀI 1 (2 ĐIỂM)
Viết chương trình cho phép giải phương trình bậc nhất trong đó các hệ số a và b
nhập từ bàn phím

HƯỚNG DẪN
 Sử dụng Scanner để đọc dữ liệu từ bàn phím
 Sử dụng lệnh if để xét giá trị của a và b
if(a == 0){
if(b == 0){
thông báo vô số nghiệm
}
else{
thông báo vô nghiệm
}
}
else{
tính và xuất nghiệm x = -b/a;
}
BÀI 2 (2 ĐIỂM)
Viết chương trình cho phép giải phương trình bậc hai trong đó các hệ số a, b và c
nhập từ bàn phím
MOB1012 - LẬP TRÌNH JAVA 1

TRANG 1


HƯỚNG DẪN

LAB2: KIỂU, TOÁN TỬ, LỆNH IF VÀ SWITCH

 Nhập a, b và c
 Xét a
o Nếu a== 0 => giải phương trình bậc nhất
o Ngược lại (a != 0)

 Tính delta
 Biện luận theo delta
• Delta < 0: vô nghiệm
• Delta = 0: nghiệm kép x = -b/(2*a)
• Delta > 0: 2 nghiệm phân biệt
o X1 = (-b+căn(delta))/(2*a)
o X2 = (-b-căn(delta))/(2*a)

BÀI 3 (2 ĐIỂM)
Viết chương trình nhập vào số điện sử dụng của tháng và tính tiền điện theo
phương pháp lũy tiến
 Nếu số điện sử dụng từ 0 đến 50 thì giá mỗi số điện là 1000
 Nếu số điện sử dụng trên 50 thì giá mỗi số điện vượt hạn mức là 1200
HƯỚNG DẪN
 Nếu số điện sử dụng < 50: tien = soDien*1000
 Ngược lại: tien = 50*1000 + (soDien - 50)*1200
BÀI 4 (2 ĐIỂM)
Viết chương trình tổ chức 1 menu gồm 3 chức năng để gọi 3 bài trên và một chức
năng để thoát khỏi ứng dụng.
HƯỚNG DẪN
 Tạo phương thức menu() xuất ra màn hình thực đơn như sau
+---------------------------------------------------+
1. Giải phương trình bậc nhất
MOB1012 - LẬP TRÌNH JAVA 1

TRANG 2


LAB2: KIỂU, TOÁN TỬ, LỆNH IF VÀ SWITCH


2. Giải phương trình bậc 2
3. Tính tiền điện
4. Kết thúc
+---------------------------------------------------+
Chọn chức năng: _

 Viết mã vào phương thức menu để nhận vào 1 số từ 1 đến 4.
 Sử dụng lệnh switch để gọi đến các hàm chức năng tương ứng.
o giaiPTB1()
Chứa mã của bài 1
o giaiPTB2()
Chứa mã của bài 2
o tinhTienDien()
Chứa mã của bài 3
BÀI 5 (2 ĐIỂM)
Giảng viên cho thêm

MOB1012 - LẬP TRÌNH JAVA 1

TRANG 3


LAB3: MẢNG VÀ LỆNH LẶP

LAB 3: MẢNG VÀ LỆNH LẶP
MỤC TIÊU:
Kết thúc bài thực hành này bạn có khả năng

 Sử dụng thành thạo các lệnh lặp và ngắt vòng lặp
 Sử dụng mảng để nắm giữa nhiều phần tử cùng kiểu dữ liệu

BÀI 1 (2 ĐIỂM)
Viết chương trình nhập một số nguyên từ bàn phím và cho biết số đó có phải là số
nguyên tố hay không (số nguyên tố là số chỉ chia hết cho 1 và chính nó).
HƯỚNG DẪN
 Cho một vòng lặp chạy từ 2 cho đến số nhập vào -1. Nếu có một số nhập
vào chia hết cho biến chạy thì số đó không phải là số nguyên tố.
boolean ok = true;
for(int i=2; i < N-1; i++){ // N là số nhập từ bàn phím
if(N % i == 0){
ok = false;
break;
}
i++;
}
 Kiểm tra biến ok bạn sẽ biết N có phải là số nguyên tố hay không
BÀI 2 (2 ĐIỂM)
Viết chương trình xuất ra màn hình bảng cửu chương
HƯỚNG DẪN
 Để xuất 1 bảng nhân x bạn cần xây dựng đoạn mã
int x = 8;
for(int i=1; i<=10;i++){
MOB1012 – LẬP TRÌNH JAVA 1

TRANG 1


LAB3: MẢNG VÀ LỆNH LẶP

System.out.printf("%d x %d = %d”, x, i, x*i)
System.out.println()


}
 Vậy để xuất 9 bảng nhân, bạn sử dụng 2 vòng lặp for lồng nhau
o Vòng for ngoài cho biến chạy i từ 1 đến 9
o Vòng for trong cho biến chạy j từ 1 đến 10
 Cứ mỗi lần lặp của vòng lặp bên trong bạn xuất
o System.out.printf("%d x %d = %d”, i, j, i*j)
o System.out.println()
BÀI 3: (2 ĐIỂM)
Viết chương trình nhập mảng số nguyên từ bàn phím.
 Sắp xếp và xuất mảng vừa nhập ra màn hình.
 Xuất phần tử có giá trị nhỏ nhất ra màn hình
 Tính và xuất ra màn hình trung bình cộng các phần tử chia hết cho 3
HƯỚNG DẪN
 Sử dụng Arrays.sort(mang) để sắp xếp sau đó sử dụng vòng lặp duyệt từng
phần tử và xuất ra màn hình
 Cho số đầu tiên của mảng là số nhỏ nhất sau đó so sánh số nhỏ nhất với các
số còn lại nếu số được so sánh nhỏ hơn thì lấy số đó làm số nhỏ nhất
Min = Math.min(min, a[i])
 Duyệt mảng và kiểm tra từng phần tử. Nếu phần tử thứ i chia hết cho 3 (a[i]
% 3 == 0) thì thực hiện
o Cọng vào tổng
o Tăng số đếm các số chia hết cho 3
Lấy tổng chia cho số đếm bạn sẽ có kết quả
BÀI 4 (2 ĐIỂM)
Viết chương trình nhập 2 mảng họ tên và điểm của sinh viên.
 Xuất 2 mảng đã nhập, mỗi sinh viên có thêm học lực
MOB1012 – LẬP TRÌNH JAVA 1

TRANG 2



LAB3: MẢNG VÀ LỆNH LẶP

o Yếu: điểm < 5
o Trung bình: 5 <= điểm < 6.5
o Khá: 6.5 <= điểm < 7.5
o Giỏi: 7.5<= điểm < 9
o Xuất sắc: điểm >= 9
 Sắp xếp danh sách sinh viên đã nhập tăng dần theo điểm
HƯỚNG DẪN

 Sử dụng lệnh if để xét học lực sau đó xuất thông tin từng sinh viên
o Họ tên:
o Điểm:
o Học lực:
 Bài này bạn không thể sử dụng Arrays.sort() để sắp xếp được mà phải sử
dụng đến thuật toán tùy biến (tham khảo slide bài giảng)
BÀI 5 (2 ĐIỂM)
Giảng viên cho thêm

MOB1012 – LẬP TRÌNH JAVA 1

TRANG 3


LAB4: LỚP VÀ ĐỐI TƯỢNG

LAB 4: LỚP VÀ ĐỐI TƯỢNG
MỤC TIÊU:

Kết thúc bài thực hành này bạn có khả năng

 Xây dựng một lớp hoàn chỉnh
 Biết cách sử dụng các đặc tả truy xuất cho các thành viên bên trong một lớp
BÀI 1 (2 ĐIỂM)
Tạo lớp SanPham gồm 3 thuộc tính là tên, giá và giảm giá. Lớp cũng gồm 2
phương thức là tính thuế nhập khẩu (10% giá sản phẩm) và xuất thông tin ra màn
hình. Thông tin xuất ra màn hình gồm:





Tên sản phẩm:
Đơn giá:
Giảm giá:
Thuế nhập khẩu:

HƯỚNG DẪN:
 Khai báo lớp theo mô hình sau
SanPham
+tenSp: String
+donGia: double
+giamGia: double
+getThueNhapKhau(): double
+xuat(): void
+nhap():void
BÀI 2 (2 ĐIỂM)
Viết chương trình tạo ra 2 sản phẩm thông tin được nhập từ bàn phím sau đó gọi
phương thức xuất để xuất thông tin 2 đối tượng sản phẩm đã tạo

HƯỚNG DẪN:
MOB1012 – LẬP TRÌNH JAVA 1

TRANG 1


LAB4: LỚP VÀ ĐỐI TƯỢNG

 Tạo lớp chứa phương thức main()
 Trong phương thức main() tạo 2 đối tượng sp1 và sp2 từ lớp sản phẩm
 Gọi phương thức nhap() của 2 đối tượng sp1 và sp2 để nhập dữ liệu từ bàn
phím
 Gọi phương thức xuat() của 2 đối tượng sp1 và sp2 để xuất thông tin của
mỗi đối tượng ra màn hình
BÀI 3 (2 ĐIỂM)
Nâng cấp lớp SanPham bằng cách bổ sung public cho các đặt tả truy xuất cho
phương thức xuat() và private cho getThueThuNhap(). Đồng thời bổ sung 2 hàm
tạo, hàm tạo thứ nhất gồm 3 tham số là tên, giá và giảm giá, hàm tạo thứ 2 gồm 2
tham số là tên và giá (ngầm hiểu không giảm giá).
Viết chương trình tạo 2 sản phẩm có giảm giá và không giảm giá sau đó xuất
thông tin 2 sản phẩm ra màn hình
HƯỚNG DẪN:
 Bổ sung 2 hàm tạo
public SanPham(String tenSp, double donGia, double giamGia){
this.tenSp = tenSp;

}
public SanPham(String tenSp, double donGia){
this(tenSp, donGia, 0)
}

 Sử dụng hàm tạo để tạo sản phẩm
SanPham sp1 = new SanPham(tenSp, donGia)
BÀI 4 (2 ĐIỂM)
Nâng cấp lớp SanPham bằng cách khai báo các trường dữ liệu với đặc tả truy xuất
là private để hạn chế truy xuất trực tiếp đến các trường này sau đó bổ sung các
phương thức getter và setter để đọc ghi dữ liệu các trường.
MOB1012 – LẬP TRÌNH JAVA 1

TRANG 2


HƯỚNG DẪN:

LAB4: LỚP VÀ ĐỐI TƯỢNG

 Cứ mỗi trường dữ liệu được khai private bạn cần định nghĩa một cập
phương thức getter/setter để cho phép đọc ghi dữ liệu thông qua các
phương thức này. Với cách làm này bạn dễ dàng nâng cấp lớp để bảo vệ
hoặc thực hiện các tính toán cần thiết trước khi thức hiện các thao tác đọc
ghi dữ liệu
public String getTenSp(){
return this.tenSp;
}
public void setTenSp(String tenSp){
this.tenSp = tenSp;
}
BÀI 5 (2 ĐIỂM)
Giảng viên cho thêm

MOB1012 – LẬP TRÌNH JAVA 1


TRANG 3


LAB 5: ARRAYLIST

LAB5: ARRAYLIST

MỤC TIÊU:
Kết thúc bài thực hành này bạn có khả năng
 Sử dụng ArrayList để duy trì tập hợp các phần tử
 Sử dụng thư viện tiện ích xử lý tập hợp Collections
BÀI 1 (2 ĐIỂM)
Nhập danh sách số thực với số lượng tùy ý từ bàn phím sau đó xuất danh sách
vừa nhập và tổng của nó.
HƯỚNG DẪN:
 Sử dụng ArrayList để duy trì danh sách số thực được nhập từ bàn
phím
 Sử dụng vòng lặp while để nhập số lượng tùy ý
while(true){
Double x = scanner.nextDouble();
list.add(x);
System.out.print(“Nhập thêm (Y/N)? ”);
if(scanner.nextLine().equals(“N”)){
break;
}
}
 Sử dụng vòng lặp for-each để duyệt và xuất các phần tử của list ra màn hình
BÀI 2 (3 ĐIỂM)
Viết chương trình thực hiện các chức năng sau

1. Nhập danh sách họ và tên
2. Xuất danh sách vừa nhập
3. Xuất danh sách ngẫu nhiên
MOB1012 – LẬP TRÌNH JAVA 1

TRANG 1


LAB5: ARRAYLIST

4. Sắp xếp giảm dần và xuất danh sách
5. Tìm và xóa họ tên nhập từ bàn phím
6. Kết thúc
HƯỚNG DẪN
 Tổ chức ứng dụng theo sơ đồ sau
main()

menu()

nhap()

xuat()

sapxep()

ngaunhien()

xoa()

 Nhập và xuất tương tự bài 1

 Sử dụng hàm Collections.shuffle(list) để hoán đổi ngẫu nhiên các phần tử
trong list
 Sử dụng Collections.sort(list) để sắp xếp tăng dần sau đó sử dụng
Collections.reverse(list) để đảo các phần tử trong ArrayList
 Duyệt list và sử dụng list.remove() để xóa phần tử, dùng break để ngắt vòng
lặp sau khi xóa
BÀI 3 (3 ĐIỂM)
Xây dựng ứng dụng quản lý sản phẩm (thông tin mỗi sản phẩm gồm tên và giá)
theo menu sau
1.
2.
3.
4.

Nhập danh sách sản phẩm từ bàn phím
Sắp xếp giảm dần theo giá và xuất ra màn hình
Tìm và xóa sản phẩm theo tên nhập từ bàn phím
Xuất giá trung bình của các sản phẩm

HƯỚNG DẪN
MOB1012 – LẬP TRÌNH JAVA 1

TRANG 2


LAB5: ARRAYLIST

 Tổ chức ứng dụng tương tự bài 2
 Sử dụng Collections.sort(list, comparator) để sắp xếp danh sách sản phẩm
với tiêu chí sắp xếp được định nghĩa như sau

Comparator comp = new Comparator() {
@Override
public int compare(SanPham o1, SanPham o2) {
return o1.donGia.compareTo(o2.donGia);
}
};
BÀI 4 (2 ĐIỂM)
Giảng viên cho thêm

MOB1012 – LẬP TRÌNH JAVA 1

TRANG 3


LAB6: CHUỖI VÀ BIỂU THỨC CHÍNH QUI

LAB 6: CHUỖI VÀ BIỂU THỨC CHÍNH QUI
MỤC TIÊU:
Kết thúc bài thực hành này bạn có khả năng





Hiểu sâu sắc về chuỗi
Sử dụng thành thạo các phương thức thao tác chuỗi
Biết cách xây dựng biểu thức chính qui
Sử dụng phương thức matches() để kiểm tra chuỗi có so khớp (đối sánh)
với biểu thức chính qui hay không.


BÀI 1 (2 ĐIỂM)
Nhập họ và tên từ bàn phím. Xuất tên, họ và tên đệm ra màn hình trong đó tên và
họ xuất IN HOA.
HƯỚNG DẪN:
 Sử dụng các phương thức xử lý chuỗi: substring(), indexOf(), lastIndexOf()
và toUpperCase() để thực hiện bài này
o Họ được lấy từ đầu đến ký tự trắng đầu tiên
o Tên được lấy từ sau ký tự trắng cuối cùng đến cuối chuỗi
o Tên đệm được lấy sau ký tự trắng đầu tiên và trước ký tự trắng cuối
cùng
BÀI 2 (3 ĐIỂM)
Nhập vào mảng 5 sản phẩm (mỗi sản phẩm gồm tên, giá và hãng). Xuất thông tin
các sản phẩm có hãng là Nokia.
HƯỚNG DẪN:
 Xây dựng lớp SanPham có mô hình như bài
SanPham
+tenSp: String
+donGia: double
MOB1012 – LẬP TRÌNH JAVA 1

TRANG 1


+hang: String
+xuat(): void
+nhap():void

LAB6: CHUỖI VÀ BIỂU THỨC CHÍNH QUI

 Tạo lớp chứa phương thức main() và sử dụng vòng lặp để nhập 5 sản phẩm

vào ArrayList
 Duyệt ArrayList và so sánh trường hãng với “Nokia” sau đó gọi
phương thức để xuất thông tin sản phẩm
BÀI 3 (3 ĐIỂM)
Nhập mảng 5 sinh viên (mỗi sinh viên gồm họ tên, email, số điện thoại, chứng
minh nhân dân). Kiểm tra và thông báo lỗi nếu nhập không đúng định dạng email,
số điện thoại và CMND.
HƯỚNG DẪN:
 Thực hiện tương tự như bài 3 để nhập danh sách sinh viên
 Kiểm soát dữ liệu nhập vào bằng cách sử dụng biểu thức chính qui (tham
khảo slide bài giảng) để kiểm tra và thông báo lỗi
o Email
o Số điện thoại
o CMND
BÀI 4 (2 ĐIỂM)
Giảng viên cho thêm

MOB1012 – LẬP TRÌNH JAVA 1

TRANG 2


LAB 7: KẾ THỪA

LAB7: KẾ THỪA

MỤC TIÊU:
Kết thúc bài thực hành này bạn có khả năng
 Xây dựng ứng dụng với nhiều lớp được tổ chức theo sự phân cấp thừa kế
trong Java

 Sử dụng lại những gì đã có ở một lớp khác
 Ghi đè để hiệu chỉnh lại nội dung của phương thức ở lớp con
 Ứng dụng lớp trừu tượng và phương thức trừu tượng
BÀI 1 (2 ĐIỂM)
Xây dựng lớp ChuNhat gồm 2 thuộc tính là rong và dai và các phương thức
getChuVi() và getDienTich() để tính chu vi và diện tích. Phương thức xuat() sẽ xuất
ra màn hình chiều rộng, chiều dài, diện tích và chu vi.
Xây dựng lớp Vuong kế thừa từ lớp ChuNhat và ghi đè phương thức xuat() để xuất
thông tin cạnh, diện tích và chu vi.
Viết chương trình nhập 2 hình chữ nhật và một hình vuông sau đó xuất ra màn
hình.
HƯỚNG DẪN
 Xây dựng các lớp theo kiến trúc phân cấp kế thừa như sau

MOB1012 – LẬP TRÌNH JAVA 1

TRANG 1


NhuNhat
+rong: double
+dai: double
ChuNhat(dai , rong)
+getChiVu(): double
+getDienTich(): double
+xuat():void

LAB7: KẾ THỪA

Vuong

Vuong(canh)
+xuat():void
 Hàm tạo của lớp Vuong gọi lại hàm tạo của lớp ChuNhat và truyền cạnh của
hình vuông cho 2 tham số chiều dài và chiều rộng
 Ghi đè phương thức xuất để xuất thông tin của hình vuông
 Tạo lớp chứa phương thức main() và nhập chiều dài, chiều rộng của hình
chữ nhật và cạnh của hình vuông. Sau đó sử dụng các lớp ChuNhat và
Vuong để tạo các đối tượng và gọi phương thức xuat() để xem thông tin:
ChuNhat cn = new ChuNhat(dai, rong)
ChuNhat vu = new Vuong(canh)
cn.xuat();
vu.xuat()
BÀI 2 (2 ĐIỂM)
Tạo lớp SinhVienPoly gồm 2 thuộc tính họ tên và ngành cùng với phương thức
trừu tượng là getDiem(). Thêm phương thức getHocLuc() để xếp loại học lực. Lớp
cũng bao gồm một phương thức xuat() để xuất họ tên, ngành, điểm và học lực ra
màn hình.
HƯỚNG DẪN
 Xây dựng lớp có mô hình như sau

MOB1012 – LẬP TRÌNH JAVA 1

TRANG 2


SinhVienPoly
+hoTen: String
+nganh: String
SinhVienPoly (hoTen , nganh)
+getDiem(): double

+getHocLuc(): String
+xuat():void

LAB7: KẾ THỪA

 Vì chưa biết sinh viên này học những môn nào nên chưa tính được điểm vì
vậy phương thức getDiem() phải là phương thức trừu tượng
 Chú ý lớp SinhVienPoly phải là lớp trừu tượng vì có phương thức getDiem()
là phương thức trừu tượng
 Phương thức getHocLuc() được viết bình thường vẫn sử dụng phương thức
getDiem() để lấy điểm của sinh viên mặc dù hiện tại vẫn chưa biết điểm
được tính thế nào. Học lực được tính như sau
o Yếu: điểm < 5
o Trung bình: 5 <= điểm < 6.5
o Khá: 6.5 <= điểm < 7.5
o Giỏi: 7.5 <= điểm < 9
o Xuất sắc: điểm >= 9
BÀI 3 (2 ĐIỂM)
Tạo lớp SinhVienIT và SinhVienBiz kế thừa từ lớp SinhVienPoly.
 SinhVienIT gồm các thuộc tính điểm java, html, css. Ghi đè phương thức
getDiem() để tính điểm cho sinh viên IT theo công thức (2*java + html +
css)/4
 SinhVienBiz gồm các thuộc tính điểm marketing, sales. Ghi đè phương thức
getDiem() để tính điểm cho sinh viên Biz theo công thức (2*marketting +
sales)/3
HƯỚNG DẪN
 Tổ chức các lớp theo kiến trúc phân cấp kế thừa như sau
MOB1012 – LẬP TRÌNH JAVA 1

TRANG 3



SinhVienPoly
+hoTen: String
+nganh: String
SinhVienPoly (hoTen , nganh)
+getDiem(): double
+getHocLuc(): String
+xuat():void

SinhVienIT
+diemJava:double
+diemCss:double
+diemHtml:double
SinhVienIT (hoTen , diemJava,
diemCss, diemHtml)
+getDiem(): double

LAB7: KẾ THỪA

SinhVienBiz
+diemMarketing:double
+diemSales:double
SinhVienBiz (hoTen ,
diemMarketing, diemSales)
+getDiem(): double

 Ghi đè phương thức getDiem() trên 2 lớp SinhVienIT và SinhVienBiz theo
yêu cầu của đề để tính điểm cho các sinh viên của các ngành.
BÀI 4 (2 ĐIỂM)

Viết chương trình quản lý sinh viên:
1.
2.
3.
4.
5.

Nhập danh sách sinh viên
Xuất thông tin danh sách sinh viên
Xuất danh sách sinh viên có học lực giỏi
Sắp xếp danh sách sinh viên theo điểm
Kết thúc

HƯỚNG DẪN
 Tổ chức chương trình

MOB1012 – LẬP TRÌNH JAVA 1

TRANG 4


LAB7: KẾ THỪA

Main()

Menu()

Nhap()

Xuat()


SVGioi()

SapXep()

BÀI 5 (2 ĐIỂM)
Giảng viên cho thêm

MOB1012 – LẬP TRÌNH JAVA 1

TRANG 5


LAB8: KIẾN THỨC NÂNG CAO VỀ LỚP VÀ PHƯƠNG THỨC

LAB 8: KIẾN THỨC NÂNG CAO VỀ PHƯƠNG THỨC VÀ LỚP
MỤC TIÊU:
Kết thúc bài thực hành này bạn có khả năng

 Sử dụng phương thức tĩnh để xây dựng một thư viện các hàm tiện ích phục
vụ cho các thao tác xử lý nhanh sau này.
PHÁT BIỂU CHUNG
Tạo lớp final có tên là XPoly và bổ sung các phương thức tĩnh và viết mã theo yêu
cầu của các bài sau đây.
BÀI 1 (2 ĐIỂM)
Thêm một phương thức tĩnh có tên là sum() với tham số biến đổi kiểu double.
Viết mã cho phương thức này để thực hiện tính tổng các tham số truyền vào.
HƯỚNG DẪN
 Thêm phương thức tĩnh với tham số biến đổi
o public static final double sum(double…x){…}

BÀI 2 (2 ĐIỂM)
Bổ sung thêm 2 phương thức tĩnh để tìm số lớn nhất và nhỏ nhất từ tham số biến
đổi
 XPoly.min(double…x): tìm số nhỏ nhất
 XPoly.max(double …x): tìm số lớn nhất
BÀI 3 (2 ĐIỂM)
Bổ sung thêm 1 phương thức tĩnh toUpperFirstChar(String s) để chuyển đổi các ký
tự đầu tiên của mỗi từ sang ký tự hoa. Ví dụ: “nguyen van teo” sẽ đổi thành
“Nguyen Van Teo”.
HƯỚNG DẪN
MOB1012 – LẬP TRÌNH JAVA 1

TRANG 1


LAB8: KIẾN THỨC NÂNG CAO VỀ LỚP VÀ PHƯƠNG THỨC

 Tách chuỗi tham số theo ký tự trắng với phương thức split(" ”)
String[] words = s.split(“ ”);
 Duyệt các từ trong mảng words và lấy ký tự đầu tiên của mỗi từ với phương
thức charAt() và đổi sang ký tự hoa
char firstChar = words[i].charAt(0);
String upperFirstChar = String.valueOf(firstChar).toUpperCase().charAt(0);
 Thay đổi từ cũ bằng từ đã chuyển đổi sang ký tự hoa
words[i] = upperFirstChar + words[i].substring(1);
 Thực hiện nối mảng các từ thành chuỗi với phương thức String.join(words,
“ ”)
String ss = String.join(words, “ ”)
BÀI 4 (2 ĐIỂM)
Viết chương trình sử dụng các phương thức tiện ích đã xây dựng trong lớp XPoly

ở trên.
BÀI 5 (2 ĐIỂM)
Giảng viên cho thêm

MOB1012 – LẬP TRÌNH JAVA 1

TRANG 2



Video hướng dẫn:

Bài tập về xâu ký tự

Hướng dẫn:

Các bạn cần lưu ý là khi chúng ta khởi tạo một String thì Java sẽ tạo ra một chuỗi ký tự và đặt vào đâu đó trong bộ nhớ, còn khi ta gán một String cho một biến thì biến đó sẽ trỏ đến vị trí của String đã khai báo .

Ví dụ:

String s="Hello"; String s1=s; String s2=new String("Hello"); String s3="Hello"; System.out.println("s=s1: "+(s==s1)); System.out.println("s=s2: "+(s==s2)); System.out.println("s=s3: "+(s==s3));

Kết quả:

s=s1: true s=s2: false s=s3: true

Các bạn có thể hình dung s,s1,s2,s3 chỉ là các con trỏ lưu địa chỉ của chuỗi kiểu String, ở ví dụ trên s,s1,s3 cùng
trỏ đến một chuỗi trong bộ nhớ còn s2 trỏ đến chuỗi khác(được cấp phát bộ nhớ bằng từ khóa new). Mặc dù nội dung các
chuỗi giống nhau nhưng s2 trỏ đến một ví trí khác trong bộ nhớ.
vì String là không thể thay đổi nên khi thao tác với chuỗi các bạn cần lưu ý nó không giống như các kiểu dữ liệu cơ bản khác

Bài 15. Viết chương trình nhập vào một xâu ký tự và một ký tự ch. Đếm và in ra màn hình số lần xuất hiện của ký tự ch trong xâu ký tự đó. Giải bài tập 15

Bài 17. Nhập vào một xâu. Tạo ra xâu đảo ngược với xâu đã nhập. Giải bài tập 17

Bài 20. Nhập vào một xâu. Đếm xem trong xâu có bao nhiêu ký tự chữ cái, bao nhiêu ký tự chữ số và bao nhiêu từ (các từ ngăn cách với nhau bởi khoảng trắng). Giải bài 20

Bài 21. Nhập vào một xâu. Loại bỏ tất cả các khoảng trắng dư thừa trong xâu. Giải bài 21

Bài 22. Nhập một xâu từ bàn phím. Hãy xóa tất cả các nguyên âm trong xâu. Giải bài tập 22

Bài 23. Nhập vào một số điện thoại theo định dạng (091) 022-6758080. In ra màn hình mã Quốc gia (091), mã vùng (022) và số điện thoại (6758080). Giải bài 23

Bài 24. Nhập một xâu từ bàn phím. Hãy tạo ra một xâu có các từ đối xứng với xâu vừa nhập. Giải bài tập 24

Ví dụ: Nhập: “ Nha Trang Khanh Hoa”. In ra: “Hoa Khanh Trang Nha”

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.

Nhập danh sách số thực với số lượng tùy ý từ bàn phím sau đó xuất danh sách vừa nhập và tổng của nó

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

Code mẫu:

package vn.viettuts.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 < 201; i++) { if ((i % 7 == 0) && (i % 5 != 0)) { list.add(i); } } // hiển thị list ra màn hình showList(list); } public static void showList(List 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.

Gợi ý:

  • 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) { if (n > 0) { 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}.

Gợi ý:

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

Code mẫu:

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(); Map map = new HashMap(); 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.

Code mẫu:

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) { // 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 = 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:

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 <= B <= 32) bất kỳ. Giả sử hệ cơ số cần chuyển là 2 <= B <= 16. Số đại điện cho hệ cơ số B > 10 là A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.

Gợi ý:

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

Code mẫu:

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) { if (n < 0 || b < 2 || b > 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 = 15 So 15 trong he co so 2 = 1111 So 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.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; } else if (n == 0 || n == 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.

Gợi ý:

  • Sử dụng giải thuật Euclid.

Code mẫu:

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(); // 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 = 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.

Code mẫu:

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); if (n >= 2) { 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) { // so nguyen n < 2 khong phai la so nguyen to if (n < 2) { return false; } // check so nguyen to khi n >= 2 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.

Code mẫu:

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; // đếm số số nguyên tố int i = 2; // tìm số nguyên tố bắt dầu từ số 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) { // so nguyen n < 2 khong phai la so nguyen to if (n < 2) { return false; } // check so nguyen to khi n >= 2 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.

Code mẫu:

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) { // so nguyen n < 2 khong phai la so nguyen to if (n < 2) { return false; } // check so nguyen to khi n >= 2 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.

Code mẫu:

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(); // 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 < 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 */ public static List 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 = 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

Code mẫu:

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; } while (n > 0); 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.

Code mẫu:

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) { // 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 < (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.

Code mẫu:

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; } else if (n == 0 || n == 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) { // so nguyen n < 2 khong phai la so nguyen to if (n < 2) { return false; } // check so nguyen to khi n >= 2 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:

  1. 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.
  2. 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ố.
  3. 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.