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

 

posted @ 2017-02-26 10:45  {name:"代码屠夫"}  阅读(280)  评论(0编辑  收藏  举报