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.. HƯỚNG DẪN THỰC HÀNH THÊM :public class TinhTong { public static int[] Nhap1DaySo throws Exception { BufferedRead
Trang 1THỰC HÀNH LẬP TRÌNH JAVA Phần 1 NGÔN NGỮ LẬP TRÌNH JAVA
public class BTConsole {
public static int Nhap1So(){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.print("Nhap 1 so nguyen: ");
try{
int n = Integer.parseInt(br.readLine());
return n;
}catch(Exception ee){
System.out.println("\nLoi nhap du lieu! Nhap lai!!");
int n = Nhap1So();
return n;
}}
public static void main(String []args){
public class BTConsole {
public static int Nhap1So(){
DataInputStream din = new DataInputStream(System.in);
System.out.println("\nLoi nhap du lieu! Nhap lai!!");
int n = Nhap1So();
return n;
}}
public static void main(String []args){
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ư sau:
Bài 3 Cho ba số a, b, c Hãy giải phương trình bậc hai: ax2 + 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:
• Nếu d/m/y là ngày hợp lệ, hãy cho biết:
o 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 số 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)
Bài 6 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 i = 1 đến 10 Xuất (i , i 2 , i 3 , 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 :
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 3Bà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(int[] 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
For 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
{ int i, n;
Khai báo mảng arr.
Cần đối tượng obj thuộc lớp này;
Bài 15.Nhập vào Họ Tên, hãy kiễm tra xem chuỗi vừa nhập có bao nhiêu ký tự, bao nhiêu từ
Bài 16.Nhập vào một chuỗi, hãy loại bỏ tất cả các khoảng trắng dư thừa trong chuỗi
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 conGi();
-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( DongVat, chuong so?)
- method tha(chuong?)
- method baocao(); báo cáo tình hình các chuồng
Bài 19.test
Trang 4III HƯỚNG DẪN THỰC HÀNH THÊM :
public class TinhTong {
public static int[] Nhap1DaySo() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Nhap so phan tu cua mang: ");
Ví dụ 2: Nhập một dãy số nguyên từ bàn phím Dãy 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 Tính tích của dãy số đó.
package btconsole;
import java.util.*;
import java.io.*;
public class TinhTich {
public static ArrayList Nhap1DaySo() 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 InputStreamReader(System.in));
ArrayList lst = new ArrayList();
while(true) {
StringTokenizer tok = new StringTokenizer(br.readLine()," ");
Trang 5public 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 BÀI TẬP THỰC HÀNH THÊM :
Mảng và tập hợp (int[], ArrayList, Vector, …)
Bài 20.Sinh ngẫu nhiên một dãy số nguyên a gồm n phần tử (n nhập từ bàn phím) Viết hàm trả về một
mảng các số nguyên tố trong dãy a.
Bài 21.Nhập một dãy số nguyên từ bàn phím Dãy 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 từ bàn phím Dãy 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:
• 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.
• Xây dựng ma trận B sao cho B[i][j] = lớn nhất của dòng I và cột J trong ma trận ban đầu.
Xử lý chuỗi (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.Tạo đối 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ế).
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 7BÀI TẬP LẬP TRÌNH JAVA Phần 2: Luồng nhập/xuất
-o0o -V Hướng dẫn thực hành :
Trang 8Ví dụ 1: Viết chương trình sao chép từ tập tin này sang tập tin khác.
package FileIO;
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);
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
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 9}
}
Ví dụ 3: Viết chương trình tạo 100 số nguyên ngẫu nhiên, ghi các số này vào một tập tin, mỗi dòng chứa tối
đa 10 số Viết chương trình ghi các số từ tập tin ra màn hình.
package FileIO;
import java.io.*;
import java.util.*;
public 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 10c 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 tin 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ả.
Xử lý tập tin văn bản (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ột 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ột 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 tin.
Trang 11BÀI TẬP LẬP TRÌNH JAVA
Phần 3: Swing
VIII Hướng dẫn thực hành :
a JFrame
b JCheckBox, JRadioButton, ButtonGroup
c JTextArea, JTextField, JPasswordField
d JPanel, JScrollPane, JEditPane
Trang 12Ví dụ 1: Thiết kế chương trình HelloWorld có giao diện như sau:
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ổ.
public class HelloWorld extends JFrame implements ActionListener {
public JLabel lblText;
private Container container = getContentPane();
lblText.getHeight())/2);
}
});
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
int ret = JOptionPane.showConfirmDialog(null,"Ban co muon thoat chuong trinh?","Thoat chuong trinh!",JOptionPane.YES_NO_OPTION);
Trang 13public void actionPerformed(ActionEvent e){
}
public static void main(String[] args) {
HelloWorld helloWorld1 = new HelloWorld();
}
}
Ví dụ 2: Thiết kế chương trình DaySo có giao diện như sau:
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 Quả.
d) Xử lý nút “Xử lý”: lưu xuống tập tin dayso.txt nội dung phần Kết Quả.
public class DaySo extends JFrame implements ActionListener, ItemListener {
private JRadioButton radAll,radChan, radLe;
private JCheckBox chkSapXep;
private JButton btnRandom, btnXuLy, btnThoat;
private JTextField txtDaySo;
Trang 14private JTextArea txtKetQua;
private Container container = getContentPane();
public DaySo() {
// XU LY DU LIEU
// TAO DOI TUONG
radAll = new JRadioButton("Tat ca",true);
radChan = new JRadioButton("Chan");
radLe = new JRadioButton("Le");
ButtonGroup btn = new ButtonGroup();
btn.add(radChan); btn.add(radLe);btn.add(radAll);
txtDaySo = new JTextField(10);
txtKetQua = new JTextArea(5,5);
chkSapXep = new JCheckBox("Sap xep");
btnRandom = new JButton("Ngau nhien");
btnXuLy = new JButton("Xu ly");
btnThoat = new JButton("Thoat");
// LAYOUT
container.setLayout(new BorderLayout());
JPanel p1 = new JPanel(new BorderLayout(5,0));
JPanel p11 = new JPanel(new GridLayout(3,1));
p11.add(new JLabel("Day so:"));
p11.add(new JLabel("Tuy chon:"));
p11.add(new JLabel("Ket qua:"));
JPanel p12 = new JPanel(new GridLayout(3,1));
JPanel p121= new JPanel(new FlowLayout(FlowLayout.LEADING));
public void windowClosing(WindowEvent e){
int ret = JOptionPane.showConfirmDialog(null,"Ban co muon thoat chuong trinh?","Thoat chuong trinh!",JOptionPane.YES_NO_OPTION);
Trang 15// chanle==0 > lay ra so chan
public Object[] LayDuLieu(int chanle,boolean sort){
Vector v = new Vector();
StringTokenizer tok = new StringTokenizer(txtDaySo.getText(),",");
Trang 16public static void main(String[] args) {
DaySo daySo1 = new DaySo();
}
}
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 Login có giao diện như sau:
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”, và phần password là “NVA” thì thông báo đăng nhập thành công, ngược lại thông báo đăng nhập thất bại.
Bài 45.Thiết kế chương trình ChangeBgColor có giao diện như sau:
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á cây, 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) Xử lý nút 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 (JFileChooser).
Bài 46.Thiết kế chương trình SoanThao có giao diện như sau:
Trang 17Hã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:
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.