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. Show Bài giải -------------------- ######## -------------------- Bài giải public static void main(String[] args) {
int n;
double number, sum = 0;
ArrayListKết quả sau khi biên dịch chương trình: Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. Câu hỏi thường gặp liên quan:
GIÁO TRÌNH JAVA ĐẦY ĐỦ NHẤTBạ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 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: trueCá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 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ảiBà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ảnTrong phần này, bạn phải nắm được các kiến thức về:
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 ý:
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 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 ý:
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 ý:
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 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 ý:
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 ý:
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 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:
|