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

Download Report

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

Chapter 4
คำสัง่ ควบคุม (control statement)
•If statement
•Switch statement
•While loop and do-while loop
•For loop and for-each loop
•Break and continue
1
If statement
• มี syntax ดังนี ้
if (booleanExpression) {
statement (s)
}
• หรื อ
if (booleanExpression) {
statement (s)
} else {
statement (s)
}
2
public class MainClass {
public class MainClass {
public static void main(Str
ing[] args) {
int x = 9;
if (x > 4) {
// statements
}
}
}
public static void main(String[]
args) {
int a = 3;
if (a > 3) {
// statements
} else {
// statements
}
}
}
3
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[] arg
s) {
int a = 3, b = 1;
if (a > 0 || b < 5)
if (a > 2)
System.out.println("a > 2");
else
System.out.println("a < 2");
}
}
}
4
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
Multi selection
if (booleanExpression1) {
// statements
} else if (booleanExpression2) {
// statements
}
...
else {
// statements
}
6
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");
}
}
}
7
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");
}
8
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);
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
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);
}
11
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.");
}
}
}
12
• 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
13
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
14
• 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 0
i is 1
i is 2
Free flowing switch example!
*/
15
•
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
16
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++;
}
}
}
17
• 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
18
• public class MainClass {
public static void main(String[] args) {
double r = 0;
while(r < 0.99d) {
r = Math.random();
System.out.println(r);
}
}
}
19
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
20
• public class MainClass {
public static void main(String[] args) {
int j = 4;
do {
System.out.println(j);
j++;
} while (j < 3);
}
}
• Output : 4
21
• 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
22
for statement
• for ( init ; booleanExpression ; update ) {
statement (s)
}
• เริ่ มกำหนดค่ำ init ก่อนกำรทำคำสัง่ รอบแรก.
• booleanExpressionจะถูกประเมินควำมจริ ง ถ้ ำเป็ นจริ งจะทำ
statement(s)
• คำสัง่ update จะถูกทำหลังจำกมีกำรทำคำสัง่ จนสิ ้นสุด block.
• ค่ำของ init, expression, และ update สำมำรถละได้
23
คำสัง่ ภำยใน block จะหยุดกระทำเมื่อเกิดเงื่อนข คื
• booleanExpression ถูกประเมินมีคำ่ เป็ นเท็จ
• พบคำสัง่ break หรื อ continue .
• เกิด runtime error
24
public class MainClas
s{
public static void m
ain(String[] args) {
for (int i = 0; i < 5; i
++) {
System.out.print
ln(i + " ");
}
}
}
public class MainClass
{
public static void mai
n(String[] args) {
int j = 0;
for (; j < 3; j++) {
System.out.println(j
);
}
// j is visible here
}
}
25
public class MainClass {
public class MainClass {
public static void main(
String[] args) {
int k = 0;
for (; k < 3;) {
System.out.println(k)
;
k++;
}
}
public static void main(S
tring[] args) {
int m = 0;
for (;;) {
System.out.println(m)
;
m++;
if (m > 4) {
break;
}
}
}
}
}
26
while (expression)
{
...
}
for ( ; expression; )
{
...
}
27
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(Str
ing[] args) {
int limit = 20; // Sum fro
m 1 to this value
int sum = 0; // Accumul
ate sum in this variable
for (int i = 1; i <= limit; i+
+) {
sum = sum + i;
}
System.out.println("sum
= " + sum);
}
}
28
public class Main {
•
public class MainClass {
public static void main(
String[] args) {
for (;;) {
System.out.println("
Hello");
break;
}
}
}
//Hello
public static void main(St
ring[] arg) {
int limit = 10;
int sum = 0;
for (int i = 1, j = 0; i <= li
mit; i++, j++) {
sum += i * j;
}
System.out.println(sum)
;
}
}
• 330
29
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 : 2
I : 1,j : 1, k : 2
I : 2,j : 1, k : 2
I : 3,j : 1, k : 2
I : 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= 0
i = 1 j= -1
i = 2 j= -2
i = 3 j= -3
i = 4 j= -4
*/
30
public class MainClass {
•
public class MainClass {
public static void main(Stri
ng[] arg) {
int limit = 10;
int sum = 0;
public static void main(Str
ing[] arg) {
int limit = 10;
int sum = 0;
for (int i = 1; i <= limit;) {
sum += i++;
}
System.out.println(sum);
}
}
}
int i = 1;
for (; i <= limit;) {
sum += i++;
}
System.out.println(sum);
}
• 55
31
public class MainClass {
public static void main(Stri
ng[] arg) {
for (double radius = 1.0; r
adius <= 2.0; radius += 0.2) {
System.out.println("radiu
s = " + radius + "area = " + M
ath.PI * radius * radius);
}
}
}
• output
radius = 1.0
area = 3.141592653589793
radius = 1.2
area = 4.523893421169302
radius = 1.4
area = 6.157521601035994
radius = 1.5999999999999999
area = 8.04247719318987
radius = 1.7999999999999998
area = 10.178760197630927
radius = 1.9999999999999998
area = 12.566370614359169
32
public class MainClass {
public static void main(String[] ar
gs) {
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 " + f
actorial);
}
}
}
33
public class MainClass {
public static void main(String[] arg
s) {
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 inn
er");
continue inner;
}
}
}
}
}
}
34
for-each loop
• for(type itr-var : iterableObj) statement-block
35
• 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();
36
• 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);
}
}
37
• 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);
38
• public class MainClass {
public static void main(String[] arg) {
char[] vowels = { 'a', 'e', 'i', 'o', 'u'};
for(char ch: vowels){
System.out.println(ch);
}
}
}
39
• 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);
40
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;
}
}
}
}
41
• 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;
}
}
42
• 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;
}
43
• 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);
44
• 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;
}
}
45
• 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);
}
}
46
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);
}
}
}
47
• 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);
}
}
48
• 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);
}
49
•
•
•
•
Java Input - Using Java Scanner
Import java.util.Scanner;
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
Int num = scan.nextInt();
50
ตัวแปรอำเรย์เบื้องต้น (Array Basics)
• เป็ นชื่อของกลุม่ ข้ อมูลที่มีประเภทเดียวกัน
• ข้ อมูลแต่ละตัวจะเรี ยกว่ำ สมำชิกอำเรย์ (array element)
• สมำชิกตัวแรกจะมีดชั นี(index) เป็ น 0
51
ตัวอย่ำง 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]);
}
}
}
52
กำรกำหนดค่ำ 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.");
}
}
53
กำรกำหนด 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 arr
ays
54
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
55
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
56
• 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]);
}
}
}
57
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+” “);
}
}
}
• AAAAA
58
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
59
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;
}
}
60
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));
61