— Sinh ngẫu nhiên một dãy sỐ nguyên n phần tử n nhập từ bàn phím.. — Sinh ngẫu nhiên một dãy số nguyên có n phần tử n nhập từ bàn phím.. Hãy viết chương trình tính tổng các số nguyên đó
Trang 1Lap trinh JAVA (10 — 2010) Ngôn ngữ lập trình Java
THỰC HÀNH LẬP TRÌNH JAVA Phan 1 NGON NGU LAP TRINH JAVA
1mport Java 1o.BufferedReader;
1mport java 1o TnputStreamReader;
public class BTConsole {
public static int Nhap1So(){
BufferedReader br = new BufferedReader (new InputStreamReader(System.in)); System.out.print("Nhap 1 so nguyen: ");
int n = NhapiSo();
System.out.println("So vua nhap: "+n);
}
package BTConsole;
import java.io.*;
public class BTConsole {
public static int Nhap1So(){
DataTnputStream din = new DataTnputStream(System 1n);
public static void main(String []Jargs){
Trang 2Bài 1 Cho bốn số nguyên a,, b, c, d Hãy tìm giá trị lớn nhất của bốn số đó
Bài 2 Nhập điểm từ bàn phím Viết chương trình xếp loại học viên theo điểm trung bình như
Bai3 Cho ba số a, b, c Hãy giải phương trình bậc hai: ax? + bx + c = 0
Bài 4 Nhập vào ba sỐ nguyên d, m, y Hãy viết chương trình:
e Kiém tra xem d/m/y có tạo thành một ngày hợp lệ không?
e Kiém tra y có là năm nhuận không?
e Tháng m có bao nhiêu ngày?
e© _ Nếu d/m/y là ngày hợp lệ, hãy cho biết:
Oo d/m/y là ngày thứ mấy thứ mấy tron năm?
o_ d⁄m⁄y là thứ mấy của tuần?
Bài 5 Cho ba sO nguyên a, b, c Hãy kiểm tra a, b, c có thể là ba cạnh của một tam giác hay không? Nếu có, hãy cho biết đó là tam giác vuông, nhọn hay tù?
Cấu trúc lặp (while,do while, for)
Bai6 Viết chương trình xuất bảng cửu chương từ 2 đến 9
Bài 7 Xuất trị bình phương lập phương tỪ 1 đến 10 {Với mọi ¡ = 1 đến 10 Xuất (, i°, ¡, xuống dòng)}
Bài 8 Cho sỐ nguyên n Hãy cho biết n có phải là số nguyên tố
Bài 9 Nhập vào hai số a, b Hãy tìm UCLN và BCNN của hai số a, b
Bài 10 Cho sỐ nguyên n phát sinh ngẫu nhiên (n>0) Hãy cho biết :
a._ SỐ n có bao nhiêu chữ số
Nhập vào sỐ nguyên n Hãy tính F:
Bài 13 Tạo 1 mảng 10 phần tử, xuất mảng tăng dần
Cần 1 class BAIMANG
Có các hành vi:
void SapXepTang (int a[], int n)
void XuatMang (int a[], int n)
Trang 3Lap trinh JAVA (10 — 2010) Ngôn ngữ lập trình Java
Bài 14 — Sinh ngẫu nhiên một dãy sỐ nguyên n phần tử (n nhập từ bàn phím) Viết một hàm tìm giá trị lớn nhất và hàm tìm nhỏ nhất của dãy
Cần 1 lớp cho bài toán
Dữ liệu int n, a[]; // số phần tử và tập trị
Hành vi : Hành vi NhapNN(mt{] arr), Hành vi LonNhat (int[] arr), hành vi NhoNhat(int[] arr) , Hành vi main
Giải thuật cho hành vi NhapNN(int[] arr) / nhập mắng
{ Đã có giải thuật trên lớp
}
Giải thuật cho hành vi LonNhat(int[] arr)
max = giá trị phần tử đầu tiên
Eor I từ vị trí thứ 2 đến hết chiều dài của arr
Nếu max < arr[i]
max = arr[i]
Trả về max
}
Giải thuật cho hành vi NhoNhat(int[] arr) tự làm
Giải thuật cho hành vi main
{ inti, n;
Khai báo mang arr
Cần đối tượng obj thuộc lớp này;
Bài 17 Nhập vào chuỗi ký tự tỪ bàn phím Hãy viết chương trình đảo chuỗi
Bài 18 Một chuồng gồm 10 cái lồng dùng để nhốt mèo và chó (mỗi lồng chỉ nhốt nhiều nhất 1 con) Viết chương trình quản lý việc nhốt mèo và chó trong các lồng
các class trừu tượng gồm:
-DongVat + ten
+ abstract void conGiQ;
-Cho kế thừa từ DongVat -Meo kế thừa từ DongVat -class Chuong sẽ để quản lý việc nhốt các động vật
- Khai báo Dong vat ->cacLong[ 10]
- method nhot( Dong Vat, chuong so?)
Trang 4lll HUONG DAN THUC HANH THEM:
* Cac ví dU minh hga:
Ví dụ 1: Nhập 1 dãy số từ bàn phím Tính tổng của dãy số đó
package btconsole;
import java.util.*;
import java.io.*;
public class TinhTong {
public static int[] NhapiDaySo() throws Exception {
BufferedReader br = new BufferedReader(new TnputStreamReader (System 1n) );
System.out.print("Nhap so phan tu cua mang: ");
public class TinhTich {
public static ArrayList NhapiDaySo() throws Exception {
// Cac phan tu cach nhau khoang trang, hay xuong dong
// Ket thuc khi nhap so 0
System.out.print("Nhap day so : ");
BufferedReader br = new BufferedReader(new TnputStreamReader (System 1n) );
ArrayList lst = new ArrayList();
Trang 5Lap trinh JAVA (10 — 2010) Ngôn ngữ lập trình Java
StringTokenizer tok = new StringTokenizer(br.readLine()," ");
while(tok.hasMoreElements()) { int n = Integer.parseInt(tok.nextToken());
public class InWord {
public static String DaoTu(String s){
StringBuffer sbuf = new StringBuffer(s);
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Nhap chuoi can dao: ");
Trang 6IV BAI TAP THUC HANH THEM:
Mang va tap hop (int[], ArrayList, Vector, .)
Bai 20 Sinh ngẫu nhiên một dãy số nguyén a g6m n phan tU (n nhap tl ban phim) Viết hàm trả
về một mảng các sỐ nguyén t6 trong day a
Bài 21 Nhập một dãy số nguyên tU ban phim Day số được nhập chỉ trên một dòng, cách nhau bởi khoảng trắng, và việc nhập chỉ kết thúc khi có phần tử giá trị 0 Hãy xóa các phần tử trùng nhau
có trong mảng (chỉ giữ lại 1 phần tử trong số các phần tỬ trùng)
Bài 22 — Sinh ngẫu nhiên một dãy số nguyên có n phần tử (n nhập từ bàn phím) Hãy viết hàm tìm các phần tử có chữ số tận cùng là 2, 4, 6 và đưa vào 1 mảng In các phần tỬ trong mảng vừa mới
đưa vào
Bài 23 Nhập một dãy số nguyên tU ban phim Day số được nhập chỉ trên một dòng, cách nhau bởi khoảng trắng, và việc nhập chỉ kết thúc khi có phần tử giá trị 0 Hãy sắp xếp các phần tử chẳn lên đầu dãy và tăng dần, các phần tử lẻ xuống cuối dãy và giảm dần
Bài 24 — Sinh ngẫu nhiên một dãy số nguyên a có n phần tử (n nhập từ bàn phím) Nhập số nguyên
K và số nguyên L Viết hàm xóa L phần tử của dãy số a bắt đầu từ K
Bài 25 Nhập ma trận số số thực A có n dòng và m cột có giá trị phát sinh ngẫu nhiên Hãy khai báo mảng tongdong, tongcot lần lượt chứa tổng của các dòng, cỘt
Bài 26 — Nhập ma trận số nguyên A có n dòng và m cột Hãy viết các hàm sau:
e _ Dịch xuống và xoay vòng các hàng trong mang
e Sắp xếp các dòng sao cho tăng dần về tổng giá trị của các phần tử cùng dòng
e - Xây dựng ma trận B sao cho B[ï][j] = lớn nhất của dòng I và cột J trong ma tran ban đầu
Xt ly chudi (char[], String, StringBuilder, StringTokenizer, .)
Bài 27 Nhập vào chuỗi ký tự từ bàn phím Hãy xóa các ký tự là nguyên âm
Bài 28 — Nhập vào chuỗi ký tự tỪ bàn phím Hãy lấy đối xứng các tỪ của chuỗi Ví dụ: “KIEN AN CA”>”CA AN KIEN”
Bài 29 Nhập một chuỗi tỪ bàn phím Hãy in lần lượt các tỪ có 1 ký tự, 2 ký tự, 3 ký tự,
Nhập hai chuỗi a, b Hãy trộn các từ của a, b lần lượt từ trái sang phải và xen kẽ nhau
Hướng đối tượng
Bài 30 Tao d6i tượng Person, Teacher, Employee Cho 1 danh sách các nhân viên trong trường
gồm Teacher và Employee (SV hãy xem xét các thuộc tính liên quan để thiết kế cho phù hợp với
thực tế)
Trang 7
Lap trinh JAVA (10 — 2010) Ngôn ngữ lập trình Java
Bài 31 Thiết kế các đối tượng hình học 2D
Bài 32 Thiết kế lớp thư viện các hàm như: SỐ nguyên tố, dãy Fibonacy, hàm sort,
Trang 8
Datalnput Buffered _LineNumber _ PushBack
"Stream InputStream InputStream InputStream ‘DataOutput
PipedReader BufferedReader —————— LineNumberReader
CharArrayWriter OutputStreamWriter FileWriter FilterWriter
PipedWriter BufferedWriter
Trang 9Lập trình JAVA (10 — 2010) Ngôn ngữ lập trình Java
package FileT0;
import java.io.*;
import java.util.*;
public class CopyFile {
public static void copyfile(String filesrc, String filedst){
try{
FileInputStream fi = new FileInputStream(filesrc);
FileOutputStream fo = new FileOutputStream(filedst, false);
int ch;
while((ch=fi.read())!=-1){
Ffo.write(ch);
} T1.close();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new TnputStreamReader (System 1n) ); System.out.print("Nhap tap tin can sao chep:");
String filesrc = br.readLine();
System.out.print("Nhap tap tin de sao chep den:");
String filedst = br.readLine();
public class DirFolder {
public static void dirfolder(String strPath) throws Exception {
File fi = new File(strPath);
String name = subFile[i].getName();
String type = subFile[i].isDirectory() ? "<DIR> " : "<FILE> ";
Trang 10public class IntRandom {
public static void RandomInt2File(String filename, int numrand) throws Exception {
Printwriter wt = new PrintWriter(new Filewriter(filename), true);
Bài 33 Viết chương trình xuất nội dung một tập tin văn bản ra màn hình
Bài 34 Cho một tập tin chứa các số nguyên cách nhau bởi dấu chấm phẩy Hãy viết chương trình tính tổng các số nguyên đó và in kết quả ra màn hình
Bài 35 — Cho cấu trúc file như sau:
Mỗi dòng là 1 đối tượng Car, mỗi đối tượng gồm các thuộc tính: Serial, Model Các thuộc tính cách nhau dấu “,”
a._ Hãy viết chương trình nhập vào 1 danh sách các đối tượng từ file có cấu trúc trên
b Nhập vào 1 số serial, cho biết Model của xe có số serial vừa nhập
Trang 11
Lập trình JAVA (10 — 2010) Ngôn ngữ lập trình Java
c Nhập vào giá trị Model, hãy xóa hết các xe nào có cùng Model trong DS
d Thêm 1 xe mới vào DS với các thuộc tính nhập tỪ bàn phím
e Ghi DS vào file theo cấu trúc file đã định nghĩa Ở trên (Nếu file đã tồn tại thì overwrite)
VII Bài tập thực hành thêm:
Xử lý tập tỉn nhị phân
Bài 36 Nhập đường dẫn chứa tập tin Hãy đếm dung lượng của tập tin đó
Bài 37 Nhập đường dẫn hai tập tin Hãy so sánh hai tập tin đó có giống nhau hay không?
Bài 38 — Nhập đường dẫn tập tin cần di chuyển và vị trí di chuyển Hãy di chuyển tập tin đó vào nơi di chuyển đến
Bài 39 Nhập đường dẫn tập tin từ bàn phím Viết chương trình xóa tập tin đó
Bài 40 Nhập đường dẫn một thƯ mục Hãy liệt kê các tập tin có đuôi là txt và ghi ra một tập tin kết quả
Xu'ly tap tin van ban (BufferedReader, FileReader, FileWriter, .)
Bài 41 — Viết chương trình tạo một tập tin tỪ nội dung nhập từ bàn phím Việc nhập kết thúc khi người dùng nhập 1 dòng chứa chữ END để thoát chương trình
Bài 42 — Cho mội tập tin chứa các số nguyên cách nhau bởi dấu chấm phẩy hay xuống dòng Hãy
viết chương trình tính tổng các số nguyên đó và in kết quả ra màn hình
Bài 43 Viết chương trình đếm mội tập tin văn bản có bao nhiêu câu Biết các câu cách nhau bởi dấu chấm
Viết chương trình quản lý một danh sách sinh viên từ console Chương trình cho phép thêm sinh viên, tìm
kiếm, cập nhật, in danh sách sinh viên Khi bắt đầu, chương trình sẽ lấy dữ liệu từ tập tin thisinh.txt (tập tin văn bản, dữ liệu mỗi thí sinh nằm trên 1 dòng và cách nhau bởi dấu chấm phẩy) Khi kết thúc,
chương trình ghi lại danh sách sinh viên vào tập tỉn
Trang 12
FlowLayout GridLayout
JCheckBox, JRadioButton, ButtonGroup
JTextArea, JTextField, JPasswordField JPanel, JScrollPane, JEditPane
JList, JComboBox Cac layout: (JFrame, JPanel)
Trang 13Lập trình JAVA (10 — 2010) Ngôn ngữ lập trình Java
Hãy viết chương trình thực hiện các yêu cầu sau:
a)_ Chữ Hello World! nằm ở chính giửa cửa sổ
b) Màu nền cửa sổ là màu trắng
c)_ Xử lý nút thoát cho cửa sổ
Trang 14
Ví dụ 2: Thiết kế chương trình DaySo có giao diện như sau:
Day S0: li25.28.1 ,51,85,78,55,33,85,14,87,88,14,85,72, | Ngau nhien Tuychon: f'Tatca Chan (Le [¥ Sap xep
Hãy viết chương trình thực hiện các yêu cầu sau:
a) Xử lý nút Thoát: có xác nhận Yes/No khi thoát
b) Xử lý nút Ngấu nhiên: cho nhập số phần tử từ Input Dialog Sau đó sinh giá trị ngẫu nhiên cho dãy số cách nhau bởi dấu phẩy
c) Xử lý các sự kiện trên nút Tất cả, Chẵn, Lẻ, Sắp xếp: liệt kê kết quả tương ứng vào phần Kết
Trang 15Lap trinh JAVA (10 — 2010) Ngôn ngữ lập trình Java
GVHD: DO NHU TAI - LUT
Trang 16
GVHD: DO NHU TAI - LUT
Trang 17Lap trinh JAVA (10 — 2010) Ngôn ngữ lập trình Java
Ix Bài tập thực hành:
Các đối tượng cơ bản trong Swing (JFrame, JLabel, JTextField, )
Bài 44 — Thiết kế chương trình xế có gia0 dién nhu sau:
LOGIN SYSTEM
Hãy viết chương trình thực hiện các yêu cầu sau:
a) Xử lý nút Thoát: có xác nhận Yes/No khi thoát
b) Xử lý nút đăng nhập, sự kiện nhấn Enter trên textbox username, password: khi người dùng gõ đúng chữ tại phần username là “Nguyen Van A”, va phan password 1a “NVA” thi thong bao dang
nhập thành công, ngược lại thông báo đăng nhập thất bai
Bài 45 Thiết kế chương trình ChangeBgColor có giao diện nhƯ sau:
J change ce ce
Hãy viết chương trình thực hiện các yêu cầu sau:
a) Xử lý nút Thoát: có xác nhận Yes/No khi thoát
b) Xử lý nút Red, Green, Blue: điền giá trị màu đỏ, xanh lá cay, xanh dương tương ứng với 3 thành phần màu Red, Green, Blue vào textbox tưƠng ứng và đổi màu nền của cửa sổ
c) XU ly nit Random: phát sinh màu ngẫu nhiên, cập nhật textbox tương ứng, và màu nền cửa sổ
d) Xử lý nút Custom: căn cứ vào giá trị của Red, Green, Blue trên textbox để đặt màu nền
e) Xử lý nút Dialog: hiển thị cửa sổ màu cho chọn màu (JFEileChooser)
Bài 46 — Thiết kế chương trình SoanThao có giao diện như sau:
Trang 18
Hãy viết chương trình thực hiện xử lý các sự kiện và lưu nội dung của phần văn bản xuống tập tin
“SoanThao.txt” khi nhấn nút Lưu tập tin
Bài 47 — Thiết kế chương trình Calculator có giao diện nhƯ sau:
Bài 48 — Thiết kế chương trình LietKeSoNguyenTo có giao diện như sau:
so Liet ke day so nguyen to tu 2 den M
Hãy viết chương trình thực hiện xử lý các sự kiện và lưu nội dung của phần văn bản xuống tập tin
“nguyento.txt” khi nhấn nút Tiep tuc