chapter 4 คำสั่งควบคุม (control statement) if statement switch statement...

61
Chapter 4 คคคคคคคคคคคคค (control statement) •If statement •Switch statement •While loop and do-while loop •For loop and for-each loop •Break and continue 1

Upload: ellen-blair

Post on 02-Jan-2016

224 views

Category:

Documents


0 download

TRANSCRIPT

1

Chapter 4 คำ��สั่��งคำวบคำม (control statement)

•If statement•Switch statement•While loop and do-while loop•For loop and for-each loop•Break and continue

2

If statement

• ม� syntax ดั�งนี้��if (booleanExpression) {

statement (s)}

• หรื�อif (booleanExpression) {

statement (s)} else {

statement (s)}

3

public class MainClass {

public static void main(String[] args) { int x = 9; if (x > 4) { // statements } }}

public class MainClass {

public static void main(String[] args) { int a = 3; if (a > 3) { // statements } else { // statements } }

}

4

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

int a = 3; if (a > 3) a++; else a = 3; }

}

public class MainClass {

public static void main(String[] args) { int a = 3, b = 1;

if (a > 0 || b < 5) if (a > 2) System.out.println("a > 2"); else System.out.println("a < 2"); }

}

5

public class MainClass {

  public static void main(String[] args) {    int a = 3, b = 1;

    if (a > 0 || b < 5) {      if (a > 2) {        System.out.println("a > 2");      } else {        System.out.println("a < 2");      }    }  }

}

6

Multi selection

if (booleanExpression1) { // statements} else if (booleanExpression2) { // statements}...else { // statements}

7

Multi selection• public class MainClass {

public static void main(String[] args) { int a = 0; if (a == 1) { System.out.println("one"); } else if (a == 2) { System.out.println("two"); } else if (a == 3) { System.out.println("three"); } else { System.out.println("invalid"); } }}

8

public class MainClass {

public static void main(String[] arg) { int a = 2; if (a == 0) { System.out.println("in the block"); if (a == 2) { System.out.println("a is 0"); } else { System.out.println("a is not 2"); }

} else { System.out.println("a is not 0"); } }}

9

public class MainClass {

public static void main(String[] arg) { int value = 8; int count = 10; int limit = 11;

if (++value % 2 == 0 && ++count < limit) { System.out.println("here"); System.out.println(value); System.out.println(count); } System.out.println("there"); System.out.println(value); System.out.println(count); }}

10

public class MainClass {

public static void main(String[] arg) { int value = 8; int count = 10; int limit = 11;

if (++value % 2 != 0 || ++count < limit) { System.out.println("here"); System.out.println(value); System.out.println(count); } System.out.println("there"); System.out.println(value); System.out.println(count); }}

11

switch statement switch (expression) {case value_1 :

statement (s); break;case value_2 : statement (s); break; . . .case value_n : statement (s); break;default: statement (s);}

12

public class MainClass {

public static void main(String[] args) { int i = 1; switch (i) { case 1 : System.out.println("One."); break; case 2 : System.out.println("Two."); break; case 3 : System.out.println("Three."); break; default: System.out.println("You did not enter a valid value."); } }

}

13

• public class MainClass { public static void main(String[] args) { int choice = 2;

switch (choice) { case 1: System.out.println("Choice 1 selected"); break; case 2: System.out.println("Choice 2 selected"); break; case 3: System.out.println("Choice 3 selected"); break; default: System.out.println("Default"); break; } }}

Output : Choice 2 selected

14

public class MainClass { public static void main(String[] args) { char yesNo = 'N';

switch(yesNo) { case 'n': case 'N': System.out.println("No selected"); break; case 'y': case 'Y': System.out.println("Yes selected"); break; } }}

Output : No selected

15

• public class Main {

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

case 0: System.out.println("i is 0"); case 1: System.out.println("i is 1"); case 2: System.out.println("i is 2"); default: System.out.println("Free flowing switch example!"); } }}/*i is 0i is 1i is 2Free flowing switch example!*/

16

• public class Main {

public static void main(String[] args) { int i = 0; switch (i) { case 0: int j = 1; switch (j) { case 0: System.out.println("i is 0, j is 0"); break; case 1: System.out.println("i is 0, j is 1"); break; default: System.out.println("nested default case!!"); } break; default: System.out.println("No matching case found!!"); } }}//i is 0, j is 1

17

while statement• while (booleanExpression) {

statement (s)}

• public class MainClass {

public static void main(String[] args) { int i = 0; while (i < 3) { System.out.println(i); i++; } }

}

18

• public class MainClass { public static void main(String[] args) { int limit = 20; int sum = 0; int i = 1;

while (i <= limit) { sum += i++; } System.out.println("sum = " + sum); }}

• sum = 210

19

• public class MainClass { public static void main(String[] args) { double r = 0; while(r < 0.99d) { r = Math.random(); System.out.println(r); } }}

20

do-while statement• do {

statement (s)} while (booleanExpression);

• public class MainClass {

public static void main(String[] args) { int i = 0; do { System.out.println(i); i++; } while (i < 3); }

}Output :0 1 2

21

• public class MainClass {

public static void main(String[] args) { int j = 4; do { System.out.println(j); j++; } while (j < 3); }

}• Output : 4

22

• public class MainClass { public static void main(String[] args) { int limit = 20; int sum = 0; int i = 1;

do { sum += i; i++; } while (i <= limit);

System.out.println("sum = " + sum); }}

• Output : sum = 210

23

for statement

• for ( init ; booleanExpression ; update ) { statement (s)}

• เรื��มกำ��หนี้ดัคำ�� init กำ�อนี้กำ�รืทำ��คำ��สั่��งรือบแรืกำ.• booleanExpression จะถู�กำปรืะเม�นี้คำว�มจรื�ง ถู��เป นี้จรื�งจะทำ��statement(s)

• คำ��สั่��ง update จะถู�กำทำ��หลั�งจ�กำม�กำ�รืทำ��คำ��สั่��งจนี้สั่��นี้สั่ดัblock.

• คำ��ของ init, expression, แลัะ update สั่�ม�รืถูลัะไดั�

24

คำ��สั่��งภ�ยในี้ block จะหยดักำรืะทำ��เม��อเกำ�ดัเง��อนี้ไขคำ�

• booleanExpression ถู�กำปรืะเม�นี้ม�คำ��เป นี้เทำ'จ• พบคำ��สั่��ง break หรื�อ continue .• เกำ�ดั runtime error

25

public class MainClass {

public static void main(String[] args) {

for (int i = 0; i < 5; i++) {

System.out.println(i + " ");

} }}

public class MainClass {

public static void main(String[] args) { int j = 0; for (; j < 3; j++) { System.out.println(j); } // j is visible here }

}

26

public class MainClass {

public static void main(String[] args) {

int k = 0; for (; k < 3;) {

System.out.println(k);

k++; } }

}

public class MainClass {

public static void main(String[] args) { int m = 0; for (;;) { System.out.println(m); m++; if (m > 4) { break; } } }

}

27

while (expression) { ...}

for ( ; expression; ) { ...}

28

public class MainClass { public static void main(String[] args) { for (int i = 0; i < 8; i++) { System.out.println("Hi."); } }}

public class MainClass { public static void main(String[] args) { int limit = 20; // Sum from 1 to this value int sum = 0; // Accumulate sum in this variable

for (int i = 1; i <= limit; i++) { sum = sum + i; } System.out.println("sum = " + sum); }}

29

 public class Main {

public static void main(String[] args) { for (;;) { System.out.println("Hello"); break; } }}//Hello

•  public class MainClass {

public static void main(String[] arg) { int limit = 10; int sum = 0; for (int i = 1, j = 0; i <= limit; i++, j++) { sum += i * j; } System.out.println(sum); }}

• 330

30

 public class Main { public static void main(String[] args) { for (int i = 0, j = 1, k = 2; i < 5; i++){ System.out.println("I : " + i + ",j : " + j + ", k : " + k); } }}/*I : 0,j : 1, k : 2I : 1,j : 1, k : 2I : 2,j : 1, k : 2I : 3,j : 1, k : 2I : 4,j : 1, k : 2*/

public class Main { public static void main(String[] args) { for (int i = 0, j = 0; i < 5; i++, j--) System.out.println("i = " + i + " j= " + j); }}/*i = 0 j= 0i = 1 j= -1i = 2 j= -2i = 3 j= -3i = 4 j= -4*/

31

 public class MainClass {

public static void main(String[] arg) { int limit = 10; int sum = 0;

for (int i = 1; i <= limit;) { sum += i++; } System.out.println(sum); }}

•  public class MainClass {

public static void main(String[] arg) { int limit = 10; int sum = 0;

int i = 1; for (; i <= limit;) { sum += i++; } System.out.println(sum); }

}• 55

32

 public class MainClass {

public static void main(String[] arg) { for (double radius = 1.0; radius <= 2.0; radius += 0.2) { System.out.println("radius = " + radius + "area = " + Math.PI * radius * radius); } }

}

• outputradius = 1.0area = 3.141592653589793radius = 1.2area = 4.523893421169302radius = 1.4area = 6.157521601035994 radius = 1.5999999999999999area = 8.04247719318987radius = 1.7999999999999998area = 10.178760197630927radius = 1.9999999999999998area = 12.566370614359169

33

public class MainClass { public static void main(String[] args) { long limit = 20L; long factorial = 1L;

for (long i = 1L; i <= limit; i++) { factorial = 1L;

for (long factor = 2; factor <= i; factor++) { factorial *= factor; } System.out.println(i + "! is " + factorial); } }}

34

public class MainClass { public static void main(String[] args) { int i = 0; outer: for (; true;) { inner: for (; i < 10; i++) { System.out.println("i = " + i); if (i == 2) { System.out.println("continue"); continue; } if (i == 3) { System.out.println("break"); i++; break; } if (i == 7) { System.out.println("continue outer"); i++; continue outer; }

if (i == 8) { System.out.println("break outer"); break outer; } for (int k = 0; k < 5; k++) { if (k == 3) { System.out.println("continue inner"); continue inner; } } } } }}

35

for-each loop

• for(type itr-var : iterableObj) statement-block

36

• public class MainClass { public static void main(String args[]) { int nums[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for(int x : nums) { System.out.print(x + " "); x = x * 10; // no effect on nums } System.out.println();

for(int x : nums) System.out.print(x + " ");

System.out.println(); } }

37

• for (type identifier : iterable_expression) { // statements}

• public class MainClass { enum Season { spring, summer, fall, winter }

public static void main(String[] args) { for (Season season : Season.values()) { System.out.println(" The season is now " + season); } }}

38

• public class MainClass { public static void main(String args[]) { int nums[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int sum = 0;

// use for-each style for to display and sum the values for(int x : nums) { System.out.println("Value is: " + x); sum += x; }

System.out.println("Summation: " + sum); } }

39

• public class MainClass {

public static void main(String[] arg) { char[] vowels = { 'a', 'e', 'i', 'o', 'u'}; for(char ch: vowels){ System.out.println(ch); } }}

40

• public class MainClass { public static void main(String args[]) { int sum = 0; int nums[][] = new int[3][5];

// give nums some values for (int i = 0; i < 3; i++) for (int j = 0; j < 5; j++) nums[i][j] = (i + 1) * (j + 1);

// use for-each for to display and sum the values for (int x[] : nums) { for (int y : x) { System.out.println("Value is: " + y); sum += y; } } System.out.println("Summation: " + sum); }}

41

break statement • คำ��สั่��ง break จะออกำจ�กำ loop โดัยจะไม� execute คำ��สั่��งทำ��เหลั�อของ

statements.

• public class MainClass {

public static void main(String[] args) { int i = 0; while (true) { System.out.println(i); i++; if (i > 3) { break; } } }

}

42

• public class MainClass { public static void main(String[] args) { int count = 50;

for (int j = 1; j < count; j++) { if (count % j == 0) { System.out.println("Breaking!!"); break; } } }}

43

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

OuterLoop: for (int i = 2;; i++) { for (int j = 2; j < i; j++) { if (i % j == 0) { continue OuterLoop; } }

System.out.println(i); if (i == 107) { break; } } }}

44

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

int len = 100; int key = 50; int k = 0; out: { for (int i = 0; i < len; i++) { for (int j = 0; j < len; j++) { if (i == key) { break out; } k += 1; } } } System.out.println(k); }}

45

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

OuterLoop: for (int i = 2;; i++) { for (int j = 2; j < i; j++) { if (i % j == 0) { continue OuterLoop; } } System.out.println(i); if (i == 37) { break OuterLoop; } } }}

46

• public class MainClass { public static void main(String args[]) { int sum = 0; int nums[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

// Use for to display and sum the values. for (int x : nums) { System.out.println("Value is: " + x); sum += x; if (x == 5){ break; // stop the loop when 5 is obtained } } System.out.println("Summation of first 5 elements: " + sum); }}

47

continue statement

• จะหยดัทำ��คำ��สั่��งในี้รือบนี้��นี้ แลั�วกำลั�บไปเรื��มต้�นี้ทำ��ง�นี้รือบใหม�

• public class MainClass {

public static void main(String[] args) { for (int i = 0; i < 10; i++) { if (i == 5) { continue; } System.out.println(i); } }

}

48

• public class MainClass {

public static void main(String[] arg) { int limit = 10; int sum = 0; for (int i = 1; i <= limit; i++) { if (i % 3 == 0) { continue; } sum += i; } System.out.println(sum); }

}

49

• public class MainClass { public static void main(String[] args) { int limit = 20; int factorial = 1;

OuterLoop: for (int i = 1; i <= limit; i++) { factorial = 1; for (int j = 2; j <= i; j++) { if (i > 10 && i % 2 == 1) { continue OuterLoop; } factorial *= j; } System.out.println(i + "! is " + factorial); } }}

50

Java Input - Using Java Scanner• Import java.util.Scanner;• Scanner scan = new Scanner(System.in);• String input = scan.nextLine();• Int num = scan.nextInt();

51

ต้�วแปรือ�เรืย+เบ��องต้�นี้ (Array Basics)

• เป นี้ชื่��อของกำลั�มข�อม�ลัทำ��ม�ปรืะเภทำเดั�ยวกำ�นี้• ข�อม�ลัแต้�ลัะต้�วจะเรื�ยกำว�� สั่ม�ชื่�กำอ�เรืย+ (array

element)• สั่ม�ชื่�กำต้�วแรืกำจะม�ดั�ชื่นี้�(index) เป นี้ 0

52

ต้�วอย��ง array• public class MainClass {

public static void main(String[] arg) { int[] intArray = new int[10];

for (int i = 0; i < 10; i++) { intArray[i] = 100; }

for (int i = 0; i < 10; i++) { System.out.println(intArray[i]); }

}

}

53

กำ�รืกำ��หนี้ดัคำ�� array โดัย index• public class MainClass {

public static void main(String args[]) { int month_days[]; month_days = new int[12]; month_days[0] = 31; month_days[1] = 28; month_days[2] = 31; month_days[3] = 30; month_days[4] = 31; month_days[5] = 30; month_days[6] = 31; month_days[7] = 31; month_days[8] = 30; month_days[9] = 31; month_days[10] = 30; month_days[11] = 31; System.out.println("April has " + month_days[3] + " days."); }}

54

กำ�รืกำ��หนี้ดั array แบบอ��นี้ๆ• int al[] = new int[3];int[] a2 = new int[3];

• char twod1[][] = new char[3][4]; เท่�ากั�บ char[][] twod2 = new char[3][4];• int[] nums, nums2, nums3; // create three arra

ys

55

Anonymous arrays

• new type[] {comma-delimited-list}• public class MainClass {

public static void main (String args[]) { int array1[] = {1, 2, 3, 4, 5};

for(int i: array1){ System.out.print (i+” “); } }}

• Output : 1 2 3 4 5

56

Length of array• public class MainClass {

public static void main(String[] arg) { int[] intArray = new int[10];

for (int i = 0; i < intArray.length; i++) { intArray[i] = 100; }

for (int i = 0; i < intArray.length; i++) { System.out.print(intArray[i]+” “); }

}

}• 100 100 100 100 100 100 100 100 100 100

57

• public class MainClass {

public static void main(String[] arg) { double[] data = new double[50]; // An array of 50 values of type double for (int i = 0; i < data.length; i++) { // i from 0 to data.length-1 data[i] = 1.0; } for (int i = 0; i < data.length; i++) { // i from 0 to data.length-1 System.out.println(data[i]); } }}

58

Array of character

• public class MainClass{

public static void main(String[] arg){ char[] message = new char[5]; java.util.Arrays.fill(message, 'A'); for(char ch: message){ System.out.print (ch+” “); } }}

• A A A A A

59

iterate over an array • for (componentType variable: arrayName)• import java.util.Arrays;

public class MainClass {

public static void main(String[] arg) { double[] data = new double[5]; // An array of 50 values of type double Arrays.fill(data, 1.0); // Fill all elements of data with 1.0 for (double d: data) { System.out.println(d); } }}

• 1.0 1.0 1.0 1.0 1.0

60

Change size • public class MainClass {

public static void main(String[] args) { int[] numbers = { 1, 2, 3 };

int[] temp = new int[4]; int length = numbers.length; for (int j = 0; j < length; j++) { temp[j] = numbers[j]; } numbers = temp;

}

}

61

Duplicate array

• public class ArrayCopyDemo { public static void main(String[] args) { char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' }; char[] copyTo = new char[7];

System.arraycopy(copyFrom, 2, copyTo, 0, 7); System.out.println(new String(copyTo)); }}