【原】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 }