【原】Java學習筆記005 - 流程控制。本站提示廣大學習愛好者:(【原】Java學習筆記005 - 流程控制)文章只能為提供參考,不一定能成為您想要的結果。以下是【原】Java學習筆記005 - 流程控制正文
1 package cn.temptation;
2
3 public class Sample01 {
4 public static void main(String[] args) {
5 // 程序的流程控制(流程結構):順序結構、選擇結構、循環結構
6
7 // 順序結構:從上向下,順序執行
8 System.out.println("出生...");
9 System.out.println("享受人生...");
10 System.out.println("掛了...");
11 }
12 }
1 package cn.temptation;
2
3 public class Sample02 {
4 public static void main(String[] args) {
5 // 選擇結構:1、if語句塊; 2、switch語句塊
6
7 // if語句塊
8
9 // 形式1、if(比較表達式) { ... }
10 int i = 2;
11
12 // if (i != 3) {
13 // System.out.println(i);
14 // }
15
16 // 注意:
17 // 1、比較表達式的結果必須是一個boolean類型的值
18 // 2、if語句如果不使用大括號,語法上可以;但是不使用大括號,if語句塊只會影響其後的一行語句
19
20 // if (i != 3)
21 // System.out.println(i);
22
23 // 下面執行結果為2,3
24 // if (i != 3) {
25 // System.out.println(i);
26 // System.out.println(++i);
27 // }
28
29 // 下面執行結果為2,3
30 // if (i != 3)
31 // System.out.println(i);
32 // System.out.println(++i);
33
34 // 下面執行無結果
35 // if (i == 3) {
36 // System.out.println(i);
37 // System.out.println(++i);
38 // }
39
40 // 下面執行結果為3,從執行結果得知,if無大括號的語句塊後的第二行語句開始,就不再受if語句塊的影響
41 if (i == 3)
42 System.out.println(i);
43 System.out.println(++i);
44 }
45 }
1 package cn.temptation;
2
3 public class Sample03 {
4 public static void main(String[] args) {
5 // 形式2、if(比較表達式) { ... } else { ... }
6 int i = 2;
7 int j = 3;
8
9 if (i == j) {
10 System.out.println("i等於j");
11 } else {
12 System.out.println("i不等於j");
13 }
14
15 // 聯想一下,這種形式的if結構(if...else結構)和 三元運算符的效果差不多
16 }
17 }
1 package cn.temptation;
2
3 import java.util.Scanner;
4
5 public class Sample04 {
6 public static void main(String[] args) {
7 // 需求:使用if...else...結構獲取通過鍵盤錄入的三個數字中最大的一個
8
9 // 聲明三個變量來接收鍵盤錄入的數字
10 Scanner input = new Scanner(System.in);
11 // 一行中聲明多個變量
12 int i, j, k;
13 System.out.println("輸入第一個數字:");
14 i = input.nextInt();
15 System.out.println("輸入第二個數字:");
16 j = input.nextInt();
17 System.out.println("輸入第三個數字:");
18 k = input.nextInt();
19 input.close();
20
21 // 使用if...else...結構比較這三個數字
22 int temp = 0;
23 int max = 0;
24
25 // // 寫法1、分步操作
26 // // ① 先把i、j進行比較得出較大的一個賦值給臨時變量temp
27 // if (i > j) {
28 // temp = i;
29 // } else {
30 // temp = j;
31 // }
32 //
33 // // ② 再把temp、k進行比較得出最大的一個賦值給最終變量max
34 // if (temp > k) {
35 // max = temp;
36 // } else {
37 // max = k;
38 // }
39
40 // 寫法2、if...else...的嵌套
41 if (i > j) {
42 // 滿足該條件時,說明i是i、j中較大的
43 if (i > k) {
44 max = i;
45 } else {
46 max = k;
47 }
48 } else {
49 // 滿足該條件時,說明j是i、j中較大的
50 if (j > k) {
51 max = j;
52 } else {
53 max = k;
54 }
55 }
56
57 System.out.println("輸入的數字為:" + i + "," + j + "," + k + "中,最大的一個數字為:" + max);
58 }
59 }
1 package cn.temptation;
2
3 public class Sample05 {
4 public static void main(String[] args) {
5 // 形式3
6 // if(比較表達式) { ... }
7 // else if(比較表達式) { ... }
8 // else if(比較表達式) { ... }
9 // ...
10 // else { ... }
11 // 執行時,依次判斷每一個比較表達式是否為true,如果為true,就執行該if語句塊中的內容
12
13 // 注意:else if之間有一個空格
14
15 int i = 2;
16
17 // if (i == 3) {
18 // System.out.println("i等於3");
19 // } else if (i == 5) {
20 // System.out.println("i等於5");
21 // } else {
22 // System.out.println("i等於其他值");
23 // }
24
25 // 注意:如果多個比較表達式均為true(多個條件均成立),那麼會執行第1個為true的if語句塊中的內容
26 // 後續為true的if語句塊不會再走入了
27 // if (i < 3) {
28 // System.out.println("i小於3");
29 // } else if (i < 5) {
30 // System.out.println("i小於5");
31 // } else {
32 // System.out.println("i等於:" + i);
33 // }
34
35 if (i < 5) {
36 System.out.println("i小於5");
37 } else if (i < 3) {
38 System.out.println("i小於3");
39 } else {
40 System.out.println("i等於:" + i);
41 }
42 }
43 }
1 package cn.temptation;
2
3 import java.util.Scanner;
4
5 public class Sample06 {
6 public static void main(String[] args) {
7 // 需求:根據鍵盤錄入的數字,判斷輸入的數字為奇數還是偶數?(分別使用if結構 和 三元運算符實現)
8 Scanner input = new Scanner(System.in);
9 System.out.println("輸入一個數字:");
10 int i = input.nextInt();
11 input.close();
12
13 // 寫法1、使用if結構
14 // if (i % 2 == 0) {
15 // System.out.println("該數為偶數");
16 // } else {
17 // System.out.println("該數為奇數");
18 // }
19
20 // 寫法2、三元運算符
21 // 因為三元運算符 和 if...else...結構的相近,考慮直接把if...else結構中的語句放到三元運算符中,這是生搬硬套,語法出錯
22 // (i % 2 == 0) ? (System.out.println("該數為偶數")) : (System.out.println("該數為奇數"));
23
24 // 變通寫法1、本質上和寫法1是一樣的
25 // boolean result = (i % 2 == 0) ? true : false;
26 // if (result) {
27 // System.out.println("該數為偶數");
28 // } else {
29 // System.out.println("該數為奇數");
30 // }
31
32 // 變通寫法2、純粹使用三元運算符
33 // 根據是否為偶數獲取相應的字符串
34 String msg = (i % 2 == 0) ? "該數為偶數" : "該數為奇數";
35 // 輸出字符串的內容
36 System.out.println(msg);
37 }
38 }
1 package cn.temptation;
2
3 import java.util.Scanner;
4
5 public class Sample07 {
6 public static void main(String[] args) {
7 // 需求:根據鍵盤錄入的分數數字,判斷輸入的分數是優秀(90~100)、良好(80~89)、及格(60~79)、不及格(0~59)
8 Scanner input = new Scanner(System.in);
9 System.out.println("輸入一個分數:");
10 int score = input.nextInt();
11 input.close();
12
13 // 下句表示范圍的寫法是錯誤的,畫個數軸看一下
14 // if (score >= 90 || score <= 100) {
15 if (score >= 90 && score <= 100) {
16 System.out.println("優秀");
17 } else if (score >= 80 && score <= 89) {
18 System.out.println("良好");
19 } else if (score >= 60 && score <= 79) {
20 System.out.println("及格");
21 } else if (score >= 0 && score <= 59) {
22 System.out.println("不及格");
23 } else {
24 System.out.println("輸入的分數應該在【0~100】之間");
25 }
26
27 // 注意:仔細看看需求,其實隱含了一個條件:即分數的范圍是在0~100之間
28 }
29 }
1 package cn.temptation;
2
3 import java.util.Scanner;
4
5 public class Sample08 {
6 public static void main(String[] args) {
7 // 需求:根據鍵盤錄入的月份數字,判斷是哪一個季節?(3~5月為春季,6~8月為夏季,9~11月為秋季,12~2月為冬季)
8 Scanner input = new Scanner(System.in);
9 System.out.println("輸入一個月份:");
10 int month = input.nextInt();
11 input.close();
12
13 // 寫法1
14 if (month >= 3 && month <= 5) {
15 System.out.println("Spring");
16 } else if (month >= 6 && month <= 8) {
17 System.out.println("Summer");
18 } else if (month >= 9 && month <= 11) {
19 System.out.println("Autumn");
20 // 下句寫法沒有滿足條件的數字
21 // } else if (month >= 12 && month <= 2) {
22 } else if (month == 12 || month == 1 || month == 2) {
23 System.out.println("Winter");
24 } else {
25 System.out.println("輸入的月份應該在【1~12】之間");
26 }
27
28 // 寫法2
29 int result = month / 3;
30
31 if (month == 0 || month == 13 || month == 14 || result < 0 || result > 4) {
32 System.out.println("輸入的月份應該在【1~12】之間");
33 } else if (result < 1) {
34 System.out.println("Winter");
35 } else if (result < 2) {
36 System.out.println("Spring");
37 } else if (result < 3) {
38 System.out.println("Summer");
39 } else if (result < 4) {
40 System.out.println("Autumn");
41 } else {
42 System.out.println("Winter");
43 }
44
45 // 編寫代碼及測試時,要充分考慮,特別是邊界值,考慮時不要遺漏
46 }
47 }
1 package cn.temptation;
2
3 public class Sample09 {
4 public static void main(String[] args) {
5 // 選擇結構:switch結構
6
7 // switch (變量) {
8 // case 值1:
9 // break;
10 // case 值2:
11 // break;
12 // ...
13 // case 值n:
14 // break;
15 // default:
16 // break;
17 // }
18
19 // 注意:
20 // 1、switch後括號中的內容有一些限制:byte、short、int、long、char
21 // JDK 5後可以使用枚舉;JDK 7後可以使用字符串類型
22 // 2、case:後面的值拿來和switch括號中的內容進行比較的,當比較結果為true時,會執行該case語句塊中的內容
23 // 3、break:英文是中斷的意思,也就是說後續都不做了,作用范圍到switch右側的大括號為止
24 // 4、default:英文是默認的意思,如果case條件的值都不能匹配switch括號中的值,那麼執行default語句塊中的內容
25 // 5、switch結構中可以沒有default部分,但是要求加上default部分
26 // 6、switch結構中可以只有default部分,表示默認就執行該default語句塊中的內容
27
28 int i = 2;
29
30 switch (i) {
31 case 1:
32 System.out.println("i等於1");
33 break;
34 case 2:
35 System.out.println("i等於2");
36 break;
37 case 3:
38 System.out.println("i等於3");
39 break;
40 default:
41 System.out.println("i等於其他值");
42 break;
43 }
44
45 System.out.println("這裡不會收到switch結構中的break語句的影響");
46
47 switch (i) {
48 default:
49 System.out.println("switch結構中只有default部分");
50 break;
51 }
52 }
53 }
1 package cn.temptation;
2
3 import java.util.Scanner;
4
5 public class Sample10 {
6 public static void main(String[] args) {
7 // 注意:
8 // 1、case部分的值不能重復,否則有語法錯誤:Duplicate case
9 // 2、default部分不是非得放在switch結構中的最後,可以放在任何和case同級的位置,只是習慣性的放在最後
10 // 3、放在最後的default部分,可以不寫break語句,但是建議寫上
11
12 // 需求:根據鍵盤錄入的數字,使用switch結構判斷是星期幾
13 Scanner input = new Scanner(System.in);
14 System.out.println("輸入一個數字作為星期幾:");
15 int weekDay = input.nextInt();
16 input.close();
17
18 switch (weekDay) {
19 // default部分可以放在switch結構的最前端
20 // default:
21 // System.out.println("輸入不正確");
22 // break;
23 case 1:
24 System.out.println("Monday");
25 break;
26 case 2:
27 System.out.println("Tuesday");
28 break;
29 // default部分可以放在switch結構的任意位置
30 // default:
31 // System.out.println("輸入不正確");
32 // break;
33 case 3:
34 System.out.println("Wednesday");
35 break;
36 case 4:
37 System.out.println("Thursday");
38 break;
39 case 5:
40 System.out.println("Friday");
41 break;
42 case 6:
43 System.out.println("Saturday");
44 break;
45 case 7:
46 System.out.println("Sunday");
47 break;
48 default:
49 System.out.println("輸入不正確");
50 // 寫在最後的default部分中的break語句可以省略不寫
51 // break;
52 }
53 }
54 }
1 package cn.temptation;
2
3 public class Sample11 {
4 public static void main(String[] args) {
5 // switch結構在JDK 7後支持字符串,case後就可以使用字符串
6 String course = "Java";
7
8 switch (course) {
9 case "Android":
10 System.out.println("Android是主流的移動開發平台");
11 break;
12 case "Java":
13 System.out.println("Java真簡單");
14 break;
15 case "MySQL":
16 System.out.println("MySQL是主流的數據庫");
17 break;
18 default:
19 System.out.println("想混口飯吃,總得會一樣!");
20 break;
21 }
22 }
23 }
1 package cn.temptation;
2
3 public class Sample12 {
4 public static void main(String[] args) {
5 // 特別注意:
6 // switch結構中,case部分需要結合break語句使用,如果只寫case部分不寫其相應的break語句,會發生"case擊穿"現象
7 // 如果case部分沒有相應的break語句,當該case條件滿足時,執行該case部分的語句內容,並一直向下執行(無視其他case條件),直到遇見break為止
8 // 如果一直沒有遇見break,以switch右側的大括號(switch結構作用域右側的邊界)作為執行結束的依據
9
10 int i = 2;
11
12 switch (i) {
13 case 1:
14 System.out.println("i等於1");
15 break;
16 case 2:
17 System.out.println("i等於2");
18 case 3:
19 System.out.println("i等於3");
20 // break;
21 default:
22 System.out.println("i等於其他值");
23 break;
24 }
25
26 System.out.println("這裡會不會被執行到?");
27 }
28 }
1 package cn.temptation;
2
3 public class Sample13 {
4 public static void main(String[] args) {
5 int i = 2;
6
7 // 問題1
8 // switch (i) {
9 // default:
10 // i++;
11 // break;
12 // case 2:
13 // ++i;
14 // break;
15 // case 3:
16 // ++i;
17 // break;
18 // case 4:
19 // ++i;
20 // break;
21 // }
22 //
23 // System.out.println(i); // 3
24
25 // default部分放在switch結構的最前面,也不會第一個執行,也優先匹配case條件
26
27 // 問題2
28 switch (i) {
29 default:
30 i++;
31 case 3:
32 ++i;
33 case 4:
34 ++i;
35 }
36
37 System.out.println(i);
38 }
39 }
1 package cn.temptation;
2
3 import java.util.Scanner;
4
5 public class Sample14 {
6 public static void main(String[] args) {
7 // 需求:根據鍵盤錄入的數字,判斷是什麼季節?(分別使用if結構 和 switch結構)
8 Scanner input = new Scanner(System.in);
9 System.out.println("輸入一個月份:");
10 int month = input.nextInt();
11 input.close();
12
13 // 寫法1、if結構
14 if (month >= 3 && month <= 5) {
15 System.out.println("Spring");
16 } else if (month >= 6 && month <= 8) {
17 System.out.println("Summer");
18 } else if (month >= 9 && month <= 11) {
19 System.out.println("Autumn");
20 } else if (month == 12 || month == 1 || month == 2) {
21 System.out.println("Winter");
22 } else {
23 System.out.println("輸入的月份應該在【1~12】之間");
24 }
25
26 // 寫法2、switch結構
27 // switch (month) {
28 // case 1:
29 // System.out.println("Winter");
30 // break;
31 // case 2:
32 // System.out.println("Winter");
33 // break;
34 // case 3:
35 // System.out.println("Spring");
36 // break;
37 // case 4:
38 // System.out.println("Spring");
39 // break;
40 // case 5:
41 // System.out.println("Spring");
42 // break;
43 // case 6:
44 // System.out.println("Summer");
45 // break;
46 // case 7:
47 // System.out.println("Summer");
48 // break;
49 // case 8:
50 // System.out.println("Summer");
51 // break;
52 // case 9:
53 // System.out.println("Autumn");
54 // break;
55 // case 10:
56 // System.out.println("Autumn");
57 // break;
58 // case 11:
59 // System.out.println("Autumn");
60 // break;
61 // case 12:
62 // System.out.println("Winter");
63 // break;
64 // default:
65 // System.out.println("輸入的月份應該在【1~12】之間");
66 // break;
67 // }
68
69 // 因為switch結構中的很多case條件都做的是相同的事情,所以考慮優化一下寫法
70 // 考慮把做相同事情的case條件合並到一起,使用case擊穿,這樣可以省略一些重復的代碼
71 switch (month) {
72 case 12:
73 case 1:
74 case 2:
75 System.out.println("Winter");
76 break;
77 // 下句寫法語法錯誤:The operator || is undefined for the argument type(s) int, int
78 // case 3 || 4 || 5:
79 case 3:
80 case 4:
81 case 5:
82 System.out.println("Spring");
83 break;
84 case 6:
85 case 7:
86 case 8:
87 System.out.println("Summer");
88 break;
89 case 9:
90 case 10:
91 case 11:
92 System.out.println("Autumn");
93 break;
94 default:
95 System.out.println("輸入的月份應該在【1~12】之間");
96 break;
97 }
98 }
99 // if結構 和 switch結構的區別:
100 // 1、if結構的括號內使用的是比較表達式,得到的結果是boolean類型的值
101 // 2、switch結構的case後面跟的是用來匹配的值
102
103 // if結構 和 switch結構的選擇:
104 // 1、if結構用於條件描述的范圍比較大的場合
105 // 2、switch結構用於少量的有特定的值進行比較的場合
106 }