首页 > 代码库 > 【原】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 - 流程控制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。