首页 > 代码库 > 【原】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,324 //        if (i != 3) {25 //            System.out.println(i);26 //            System.out.println(++i);27 //        }28         29         // 下面执行结果为2,330 //        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进行比较得出较大的一个赋值给临时变量temp27 //        if (i > j) {28 //            temp = i;29 //        } else {30 //            temp = j;31 //        }32 //        33 //        // ② 再把temp、k进行比较得出最大的一个赋值给最终变量max34 //        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         // 写法114         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         // 写法229         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、char21         //        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);    // 324         25         // default部分放在switch结构的最前面,也不会第一个执行,也优先匹配case条件26         27         // 问题228         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 }

 

【原】Java学习笔记005 - 流程控制