Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 57 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
57
Dung lượng
585,63 KB
Nội dung
i ĐẠI HỌC ĐÀ NẴNG TRUNG TÂM PHÁT TRIỂN PHẦN MỀM SDC BÀI TẬP JAVA CĂN BẢN Đà Nẵng - Năm 2012 Phần 1: Giới thiệu ngôn ngữ lập trình Java Mục tiêu: Thiết lập biến môi trường Khai báo lớp Quy định đặt tên class file Biên dịch thực thi chương trình Java Xuất chuỗi hình Nhập chuỗi từ bàn phím Bài 1.1 Bài tập mẫu 1.1.1 Tải cài đặt JDK 1.6.0 Eclipse Hướng dẫn: Download JDK 1.6.0 Download Eclipse 1.1.2 Thiết lập biến môi trường Hướng dẫn: Window 7: vào run gõ lệnh control chọn User Accounts chọn Change my environment variables Edit System variables thêm dấu ; sau đường dẫn đến thư mục bin nơi cài đặt java jdk (xem hình) Window XP: click phải My Computer Chọn Tab Advanced Environment variables Chọn vào Path phần System Variables Thêm dấu ; sau đường dẫn đến thư mục bin java jdk, jre Kiểm tra set biến môi trường thành công: vào run gõ lệnh cmd gõ lệnh: java –version kết hình 1.1.3 Tải tạo dự án với công cụ eclipse Hướng dẫn: Xem video Xem video 1.1.4 Lớp rỗng: Viết khai báo lớp khơng chứa Biên dịch kiểm tra tên file class tạo từ file nguồn Code: class A { } Hướng dẫn: • Lưu file với tên A.java thư mục (chẳng hạn) D:\baitapjava\phan1, chắn file đặt tên A.java khơng phải A.java.txt • Lệnh biên dịch file: javac A.java • Kết thấy file A.class sinh trình biên dịch • Bạn khơng thể chạy file thiếu phương thức main() 1.1.5 Hai lớp rỗng: Viết file nguồn java chứa hai lớp cấp A B Biên dịch kiểm tra tên file class tạo từ file nguồn Code: class A {} class B {} Lưu ý: • Một file nguồn java chứa nhiều khai báo lớp, có lớp có phương thức main() có bổ từ public ( chẳng hạn public class A) Trong trường hợp này, tên file nguồn phải tên với lớp 1.1.6 Lớp lồng nhau: Viết file nguồn java chứa hai lớp A B đó, lớp B định nghĩa bên lớp A Biên dịch kiểm tra tên file class tạo từ file nguồn Code: class A { class B {} } Lưu ý: • Một lớp chứa lớp khác Trong trường hợp lớp B gọi lớp thành viên nội • Các class file tạo từ file nguồn có tên: A.class A$B.class 1.1.7 Lớp nội cục bộ: Viết file nguồn java chứa hai lớp A B, lớp B định nghĩa bên phương thức lớp A Biên dịch kiểm tra file class tạo từ file nguồn Code: class A { void test() { class B { } } } Lưu ý: • Một phương thức chứa khai báo lớp Trong trường hợp này, lớp gọi lớp nội cục • Các class file tạo từ file nguồn có tên: A.class A$1$B.class 1.1.8 Hello class: Viết chương trình xuất chuỗi “Xin chao” hình Code: public class hello { public static void main(String[] args) { // CODE HERE System.out.println("Xin chao"); } } Lưu ý: • Đây chương trình chạy chứa phương thức main() Trước phương thức main() phải có khai báo public static void main(String[] args), tên thơng số args đổi sang tên khác hợp lệ java, ví dụ: String[] str • Java ngơn ngữ lập trình có phân biệt kiểu chữ, ghi String khác với string, System khác với system Bạn lưu ý điều để gõ xác • Để biên dịch file gõ vào: javac hello.java • Để thực thi gõ vào lệnh: java hello 1.1.9 Lớp có phương thức add(), để tính tổng hai số ngun Viết chương trình chứa phương thức cộng hai số nguyên gọi phương thức main() Code: public class add { int add(int x, int y) { return (x + y); } public static void main(String[] args) { add a = new add(); System.out.println("Ket qua la: " + a.add(3, 7)); } } Lưu ý: • Thay tạo đối tượng lớp A, gọi trực tiếp phương thức add() phương thức main() cách thêm vào từ khóa static trước phương thức add() Trong trường hợp này, từ khóa static sử dụng để hàm add() thuộc tính lớp A không thuộc đối tượng lớp Phương thức tĩnh gọi mà khơng cần tạo đối tượng lớp chứa phương thức 1.1.10 Lớp chứa phương thức readStr() Viết chương trình nhập chuỗi từ bàn phím Code: import java.io.*; public class B { static String readStr() throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); return br.readLine(); } public static void main(String[] args) { String st = ""; System.out.print("Nhap vao chuoi: "); try { st = readStr(); } catch (IOException e) {} System.out.println("Chuoi nhap vao la: " + st); } } Lưu ý: • Nếu phương thức có khai báo ném ngoại lệ, có phải đặt khối try/ catch gọi 1.1.11 Lớp chứa phương thức readInt() Viết chương trình nhập số nguyên từ bàn phím Code: import java.io.*; public class C { int readInt() throws IOException, NumberFormatException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String s = br.readLine(); return Integer.parseInt(s); } public static void main(String[] args) { C b = new C(); int x = 0; System.out.print("Nhap vao so: "); try{ x = b.readInt(); }catch (NumberFormatException e) { } catch (IOException e) {} System.out.println("So nhap vao la: " + x); } } Bài 1.2: Viết thêm code 1.2.1 Thêm lệnh sau vào chương trình hello.java: Thực thi kiểm tra kết Code: System.out.println(67+89); System.out.println("Ket qua la: " + 67+89); System.out.println("Ket qua la: " + (67+89)); 1.2.2 Sửa chương trình hello.java: Để xuất hình chuỗi chứa ngoặc đơi ngoặc đơn Ví dụ: “Trung tam tin hoc SDC” 1.2.3 Sửa chương trình add: Để có chứa phương thức max(), tìm giá trị lớn hai số nguyên 1.2.4 Kết hợp chương trình với chương trình readInt(): Để tìm số lớn hai số nguyên nhập từ bàn phím Bài 1.3: Viết code từ đầu 1.3.1 Viết chương trình nhập xuất chuỗi hình: Viết chương trình nhập vào tên ví dụ: “Hung” từ bàn phím, xuất thơng điệp “Chao Hung” hình 1.3.2 Viết chương trình tính tổng: Viết chương trình tính tổng hai số nguyên nhập từ bàn phím 1.3.3 Viết chương trình tính thương: Viết chương trình tính thương hai số nguyên nhập từ bàn phím Kiểm tra kết với số nhập vào (20 2), (10 3) (10 4) Bạn phải thay đổi chương trình để ln cho kết ? Bài 1.4: Trắc nghiệm 1.4.1 Khi phương thức lớp có tên, có danh sách thông số kiểu liệu trả với với phương thức lớp cha, phương thức gọi ? a extended b overloaded c overexternded d overridden 1.4.2 Điều sau phải trùng khớp xác phương thức overloaded để biên dịch ? a The parameter list b The return type c The exceptions thrown d None of the ablove 1.4.3 Điều xảy biên dịch thực thi chương trình sau: int i = 0; class A { public static void main(String[] s) { System.out.println("Xin chao"); } } a Chương trình biên dịch báo lỗi b Chương trình chạy bình thường xuất hình dịng chữ Xin chao Bài 1.5: Thủ thuật • Nếu bạn thấy thông báo “Bad command or file name” hay javac command not found”, bạn kiểm tra cài đặt mình, đặc biệt thiết đặt đường dẫn • Nếu java thơng báo lỗi: “java.lang.NoClassDefFoundRError, bạn kiểm tra cẩn thận tên class PHẦN 2: Các phần tử ngôn ngữ Java Mục tiêu: Viết phương thức đơn giản Sử dụng hàm toán học lớp Math Truy xuất thơng số chương trình Java Nhận chuỗi số nhập từ bàn phím dịng Sử dụng cá cơng cụ javap javadoc Bài 2.1: Bài tập mẫu 2.1.1 Giai thừa Viết chương trình tính n giai thừa ký hiệu n! = 1*2*3* *n Yêu cầu: Sử dụng eclipse để viết code Hướng dẫn: public class fac { int factorial (int n){ int p = 1; for(int i = 1; i (Max-1) khác Ví dụ: int A[5] = {3,2,4,1,0}; + Thuật toán: Bước 1: - n = Max - Khởi tạo mảng A[i] = i; i : > n-1 Bước 2: - Lặp n > 0: Chọn số id ngẫu nhiên (random) khoảng từ > n -1 Hoán đổi số A[id] (vừa chọn ngẫu nhiên) A[n-1] ( tức số vừa chọn xong cất vào cuối mảng ) Giảm n = n -1 + Code sample: // khai bao mang A[] va doi tuong s_math_random //khai bao bien static java.util.Random s_math_random = new java.util.Random(); int Max = 10;// kich thuoc mang A int A[] = new int[Max]; // gan gia tri ban dau cho mang A[] for ( int i = 0; i < Max; i++ )// khoi tao mang A[] { A[i] = i; } // sinh mang A[] cac so int ngau nhien tu > Max -1 int n = Max, temp = 0, id_Random = 0; while ( n > ) 50 { id_Random = s_math_random.nextInt(n); // support // CLDC 1.1 (*) temp = A[n-1]; A[n-1] = A[id_Random]; A[id_Random] = temp; n ; } // in mang A[] for (int i = 0; i < Max; i++) { System.out.print(A[i] + ", "); } System.out.println(); 7.2.3 Hãy thay đổi chương trình mẫu 7.1.8 để xuất popup menu nhấp phải Hướng dẫn: dùng phương thức isMetaDown() lớp MouseEvent Bài 7.3: Viết code từ đầu 7.3.1 Viết chương trình chứa thành phần sau: Bài 7.4: Trắc nghiệm 7.4.1 Phương thức sử dụng để thiết lập màu thành phần ? a setColor(Color c) b setBackground(Color c) c setBackgroundColor(Color c) d setForegroundColor(Color c) 7.4.2 Những container sau bậc cao ? chọn tất câu 51 a Panel b SrollPane c Window d Frame 7.4.3 Thành phần sau có chức với Radio button (CheckboxGroup) ? a List b Choice c Checkbox d Button 7.4.4 Hàm sau tạo TextArea ? ( chọn tất câu ) a TextArea() b TextArea(int rows, int cols) c TextArea(int rows, int cois, String text) d TextArea(String text, int rows, int cols) e TextArea(String text) Bài 7.5: Thủ thuật 52 PHẦN 8: Luồng I/O (I/O Stream) Mục tiêu: Đề cập đến khái niệm luồng Mô tả lớp InputStream OutputStream Mô tả I/O mảng Byte Thực tác vụ đệm I/O lọc Dùng lớp RandomAccesFile Mô tả tác vụ chuỗi I/O ký tự Dùng lớp PrinterWriter Bài 8.1: Bài tập mẫu 8.1.1 Lớp File Viết chương trình hiển thị tất file *.java thư mục Chú ý: Dùng dấu xuyệt trái “/” đường dẫn đến file, không dùng dấu xuyệt phải “\” Code: import java.io.*; public class readFileInDir { public static void main(String[] args) { File f = new File("D:/Baitapjava/");// thu muc hien hanh String strFile[] = f.list(); for(int i = 0; i < strFileName.length; i++){ if(strFile[i].endsWith(".java")){ System.out.println(i +" : " + strFile[i]); } } } Chú ý: } Phương thức show() hiển thị frame khơng có tiêu đề 8.1.2 Đọc file in nội dung file lên hình Viết chương trình đọc tệp tin văn (*.txt) in nội dung tệp tin lên hình Code: import java.io.*; public class DocFile { public static void main(String[] args) throws IOException { InputStream in = new FileInputStream("E:/matran.txt"); int size = in.available(); for(int i = 0; i < size; i ++){ System.out.print((char)in.read()); } } } 53 Kết quả: Nội dung file matran.txt 8.1.3 Đọc tệp tin văn theo dịng Viết chương trình đọc dịng tệp tin văn Mỗi dòng văn hiển thị thành dịng hình Code: import java.io.*; public class readFileToLine { public static void main(String[] args) throws Exception { FileReader f = new FileReader("E:/matran.txt"); BufferedReader br = new BufferedReader(f); String s = ""; } while( (s = br.readLine()) != null){ System.out.println(s); } } Kết quả: 8.1.4 Đọc tệp tin lấy nội dung Viết chương trình đọc nội dung tệp tin matran.txt đưa vào mảng số nguyên chiều int A[n][m], n dòng m cột Cho biết tệp tin matran.txt có dịng dạng sau: 54 Trong đó, - Dịng thứ chứa số số dòng ma trận (n) - Dòng thứ chứa số số cột ma trận (m) - n dòng tiếp theo, dòng ghi m số kiểu nguyên, số cách khoảng trắng Code: import java.io.*; public class docmatran { static int n, m; static int A[][]; public static void main(String[] args) throws Exception { FileReader f = new FileReader("D:/matran.txt"); BufferedReader br = new BufferedReader(f); String str = ""; str = br.readLine().trim(); n = Integer.parseInt(str); str = br.readLine().trim(); m = Integer.parseInt(str); A = new int[n][m]; for(int i = 0; i < n; i++){ str = br.readLine().trim(); String B[] = str.split(" "); for(int j = 0; j < m; j++){ A[i][j] = Integer.parseInt(B[j].trim()); } } //Xuat ma tran man hinh for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ System.out.print(A[i][j] + " "); } System.out.println(); } } } 55 Bài 8.2: Viết thêm code 8.2.1 Hãy thay đổi chương trình mẫu 8.1.4 , đọc file matran.txt xếp mảng tăng theo dịng ghi vào xuống file matran_output.txt Ví dụ: Tệp tin matran.txt ban đầu Kết quả: Sau xếp ma trận tệp tin matran_output.txt Bài 8.3: Viết code từ đầu 8.3.1 Viết chương trình đọc file văn in bảng thống kê từ xuất file Ví dụ: Tệp tin chứa nội dung sau: “Than em vua trang lai vua tron Bay noi ba chim voi nuoc non Ran nat mac dau tay ke nan Ma em van giu tam long son” 56 Kết quả: In bảng thống kê sau: Từ Số lần xuất Than em vua … … Bài 8.4: Trắc nghiệm 8.4.1 Câu sau phương thức khởi tạo hợp lệ lớp FileInputStream ? a FileInputStream (File f) b FileInputStream (String s) c FileInputStream (FileDescriptor fd) d FileInputStream (RandomAccessFile r) 8.4.2 Câu sau phương thức khởi tạo hợp lệ lớp BufferedInputStream ? a BufferedInputStream (FileInputStream in, int size) b BufferedInputStream (FileInputStream in) c BufferedInputStream (FileOutputStream fos) d BufferedInputStream (RandomAccessFile ram) 8.4.3 Phương thức sau thuộc lớp InputStreamReader ? a read () b write() c getBuffer() d getString() Bài 8.5: Thủ thuật