38
Lập trình hướng đối tượng Các cấu trúc lệnh trong Java Giảng viên: TS. Nguyễn Mạnh Hùng Học viện Công nghệ Bưu chính Viễn thông (PTIT)

b02 LTHDT Cac Cau Truc Lenh Trong Java

Embed Size (px)

Citation preview

Page 1: b02 LTHDT Cac Cau Truc Lenh Trong Java

Lập trình hướng đối tượng Các cấu trúc lệnh trong Java

Giảng viên: TS. Nguyễn Mạnh HùngHọc viện Công nghệ Bưu chính Viễn thông (PTIT)

Page 2: b02 LTHDT Cac Cau Truc Lenh Trong Java

2

Nội dung

Các lệnh lựa chọn Các cấu trúc lệnh lặp Làm việc với mảng Nhập dữ liệu từ bàn phím Bài tập Giới thiệu bài tập lớn: ô số sudoku

Page 3: b02 LTHDT Cac Cau Truc Lenh Trong Java

Các lệnh lựa chọn

Page 4: b02 LTHDT Cac Cau Truc Lenh Trong Java

4

Các lệnh lựa chọn

if và if... else... if lồng nhau switch

Page 5: b02 LTHDT Cac Cau Truc Lenh Trong Java

5

If ...

public class Test{public static void main(String args[]){

if(args.length < 1){System.out.println("khong co doi so dong lenh!");

}}

}

Chạy chương trình:>java TestKhong co doi so dong lenh!>java Test 5 AH>

Page 6: b02 LTHDT Cac Cau Truc Lenh Trong Java

6

If … else ...public class Test{

public static void main(String args[]){if(args.length < 1){

System.out.println("khong co doi so dong lenh!");}else {

System.out.println("so luong doi so: " + args.length);}

}}

Chạy chương trình:>java TestKhong co doi so dong lenh!>java Test 10 5 11So luong doi so: 3

Page 7: b02 LTHDT Cac Cau Truc Lenh Trong Java

7

If … else … lồng nhaupublic class Test{

public static void main(String args[]){if(args.length < 1)

System.out.println("khong co doi so dong lenh!");else if(args.length < 5)

System.out.println("so luong doi so tu 1 - 4");else if(args.length < 10)

System.out.println("so luong doi so tu 5 - 10");else

System.out.println("so luong doi so > 10");}

}

Chạy chương trình:>java TestKhong co doi so dong lenh!>java Test 10 5 11So luong doi so tu 1 - 4

Page 8: b02 LTHDT Cac Cau Truc Lenh Trong Java

8

switch

Chạy chương trình:>java Test 5thursday>java Test 10invalid day of week!

public class Test{public static void main(String args[]){

if(args.length > 0){int day = Integer.parseInt(args[0]);switch(day){case 2: System.out.println("monday"); break;case 3: System.out.println("tuesday"); break;case 4: System.out.println("wednesday"); break;case 5: System.out.println("thursday"); break;case 6: System.out.println("friday"); break;case 7: System.out.println("satuday"); break;case 8: System.out.println("sunday"); break;default: System.out.println("invalid day of week!"); break;}

}}}

Page 9: b02 LTHDT Cac Cau Truc Lenh Trong Java

Các lệnh lặp

Page 10: b02 LTHDT Cac Cau Truc Lenh Trong Java

10

while ...public class Test{

public static void main(String args[]){int i = 0;while(i < args.length){

System.out.println(args[i]);i++;

}}

}

Chạy chương trình:>java Test 15 A7 Np15A7Np

Page 11: b02 LTHDT Cac Cau Truc Lenh Trong Java

11

while và breakpublic class Test{

public static void main(String args[]){int i = 0;while(true){

System.out.println(args[i]);i++;if(i >= args.length) break;

}}

}

Chạy chương trình:>java Test 15 A7 Np15A7Np

Page 12: b02 LTHDT Cac Cau Truc Lenh Trong Java

12

while và continuepublic class Test{

public static void main(String args[]){int i = 0;while(i < 10){

i++;if((i % 2) == 0) continue;System.out.println(String.valueOf(i));

}}

}

Chạy chương trình:>java Test 13579

Page 13: b02 LTHDT Cac Cau Truc Lenh Trong Java

13

do … whilepublic class Test{

public static void main(String args[]){int i = 0;do{

System.out.println(args[i]);i++;

}while(i < args.length)}

}

Chạy chương trình:>java Test 15 A7 Np15A7Np

Page 14: b02 LTHDT Cac Cau Truc Lenh Trong Java

14

do … while và breakpublic class Test{

public static void main(String args[]){int i = 0;do{

System.out.println(args[i]);i++;if(i >= args.length) break;

}while(true)}

}

Chạy chương trình:>java Test 15 A7 Np15A7Np

Page 15: b02 LTHDT Cac Cau Truc Lenh Trong Java

15

do … while và continuepublic class Test{

public static void main(String args[]){int i = 0;do{

i++;if((i % 2) == 0)continue;System.out.println(args[i]);

}while(i < 10)}

}

Chạy chương trình:>java Test 13579

Page 16: b02 LTHDT Cac Cau Truc Lenh Trong Java

16

for ...public class Test{

public static void main(String args[]){for (int i = 0; i < args.length; i++){

System.out.println(args[i]);}

}}

Chạy chương trình:>java Test 15 A7 Np15A7Np

Page 17: b02 LTHDT Cac Cau Truc Lenh Trong Java

17

for và breakpublic class Test{

public static void main(String args[]){for (int i = 0; i < args.length; i++){

if(args[i].equals("a7")) break;System.out.println(args[i]);

}}

}

Chạy chương trình:>java Test 15 a7 Np15>java Test A7 NpA7Np

Page 18: b02 LTHDT Cac Cau Truc Lenh Trong Java

18

for và continuepublic class Test{

public static void main(String args[]){for (int i = 0; i < args.length; i++){

if(args[i].equals("a7")) continue;System.out.println(args[i]);

}}

}

Chạy chương trình:>java Test 15 a7 Np15Np

Page 19: b02 LTHDT Cac Cau Truc Lenh Trong Java

19

Bài tập

Viết chương trình tìm và in ra màn hình

các bộ số tự nhiên (a,b,c) nhỏ hơn 1000 sao cho:

a2 = b2 + c2

Page 20: b02 LTHDT Cac Cau Truc Lenh Trong Java

Làm việc với mảng

Page 21: b02 LTHDT Cac Cau Truc Lenh Trong Java

21

Gán dữ liệu vào mảng (1)public class Test{

public static void main(String args[]){int[] input;for (int i = 0; i < args.length; i++){

input[i] = Integer.parseInt(args[i]);}

}}

Chạy chương trình:>java Test 15 19 150chuyện gì sẽ xảy ra?

Page 22: b02 LTHDT Cac Cau Truc Lenh Trong Java

22

Gán dữ liệu vào mảng (2)public class Test{

public static void main(String args[]){int[] input = new int[args.length];for (int i = 0; i < args.length; i++){

input[i] = Integer.parseInt(args[i]);}

}}

Chạy chương trình:>java Test 15 19 150

>java Test chuyện gì sẽ xảy ra?

Page 23: b02 LTHDT Cac Cau Truc Lenh Trong Java

23

Gán dữ liệu vào mảng (3)public class Test{

public static void main(String args[]){int[] input;if(args != null){

input = new int[args.length];for (int i = 0; i < args.length; i++){

input[i] = Integer.parseInt(args[i]);}

}}

}

Chạy chương trình:>java Test 15 19 150

>java Test

Page 24: b02 LTHDT Cac Cau Truc Lenh Trong Java

Nhập dữ liệu từ bàn phím

Page 25: b02 LTHDT Cac Cau Truc Lenh Trong Java

25

InputStreamReader

InputStreamReader br = new InputStreamReader(System.in); try { String input = br.readLine(); } catch (IOException e) { System.out.println(e); }

Page 26: b02 LTHDT Cac Cau Truc Lenh Trong Java

26

Scanner

Scanner scr = new Scanner(System.in); try { String inputStr = scr.readLine();

int inputInt = scr.nextInt(); } catch (IOException e) { System.out.println(e); }

Page 27: b02 LTHDT Cac Cau Truc Lenh Trong Java

27

BufferedInputStream

try{BufferedInputStream input = new

BufferedInputStream(System.in);byte[] in = new byte[1024];while((input.read(in)) != -1) {

//do something with data...}input.close();

}catch(IOException e){System.out.println(e);

}

Page 28: b02 LTHDT Cac Cau Truc Lenh Trong Java

28

DataInputStream

try{DataInputStream input = new

DataInputStream(System.in);String in = input.readUTF();//do something with data...input.close();

}catch(IOException e){System.out.println(e);

}

Page 29: b02 LTHDT Cac Cau Truc Lenh Trong Java

29

Ví dụ (1) // đọc một mảng các số vào từ bàn phím (cùng 1 dòng)

// các số cách nhau bởi dấu trốngInputStreamReader br = new InputStreamReader(System.in);

try {// đọc một dòng từ bàn phím

String input = br.readLine();// tách các số cách nhau bởi dấu trốngString[] tmpStr = input.split(" ");// khởi tạo mảng cần lưu dữ liệuint[] result = new int[tmpStr.length];// gán các số vào mảng kết quả, có chuyển từ String sang intfor (int i = 0; i < tmpStr.length; i++){

result[i] = Integer.parseInt(tmpStr[i]);}

} catch (IOException e) { System.out.println(e); }

Page 30: b02 LTHDT Cac Cau Truc Lenh Trong Java

30

Ví dụ (2)public class Test{

public static void main(String args[]){InputStreamReader br = new InputStreamReader(System.in);

try { String input = br.readLine();

String[] tmpStr = input.split(" ");int[] result = new int[tmpStr.length];for (int i = 0; i < tmpStr.length; i++){

result[i] = Integer.parseInt(tmpStr[i]);}

} catch (IOException e) { System.out.println(e); }

}}

Page 31: b02 LTHDT Cac Cau Truc Lenh Trong Java

31

Bài tập

Viết chương trình nhận một ma trận hai

chiều, chứa các số, từ bàn phím

Page 32: b02 LTHDT Cac Cau Truc Lenh Trong Java

Giới thiệu bài tập lớn:Ô số sudoku

Page 33: b02 LTHDT Cac Cau Truc Lenh Trong Java

33

Ô số sudoku: mức độ dễ (1)

Source: http://www.sudokukingdom.com/

Page 34: b02 LTHDT Cac Cau Truc Lenh Trong Java

34

Ô số sudoku: mức độ dễ (2)

Source: http://www.sudokukingdom.com/

Page 35: b02 LTHDT Cac Cau Truc Lenh Trong Java

35

Ô số sudoku: khó vừa

Source: http://www.sudokukingdom.com/

Page 36: b02 LTHDT Cac Cau Truc Lenh Trong Java

36

Ô số sudoku: khó

Source: http://www.sudokukingdom.com/

Page 37: b02 LTHDT Cac Cau Truc Lenh Trong Java

37

Ô số sudoku: rất khó

Source: http://www.sudokukingdom.com/

Page 38: b02 LTHDT Cac Cau Truc Lenh Trong Java

Questions?