【JAVA基础入门】第三章 程序流控制
2020-04-03
if分支判断
1. 简单if
语法:
if(条件判断表达式){
执行语句
}
如果条件判断的表达式返回值是true则可以执行If内部的语句,否则如果是false就不执行。
条件表达式的结果一定是true或false。
例子:
1 class Demo_if{
2 /**
3 示例:实现程序如果分数大于60分就及格
4
5 if(条件判断表达式){
6 执行语句;
7 }
8 */
9
10 public static void main(String[] args){
11 //定义一个分数的变量
12 int score = 90;
13
14 if(score >= 60){
15 System.out.println("恭喜了,及格了");
16 System.out.println("恭喜了,及格了!");
17
18 }
19
20 System.out.println("程序结束");
21
22 }
23
24 }
1 class Demo_if2{
2 /**
3 示例:实现程序如果分数大于60分就及格
4
5 if(条件判断表达式){
6 执行语句;
7 }
8 */
9
10 public static void main(String[] args){
11 //定义一个分数的变量
12 int score = 55;
13 //如果if是没有{}作为if体,那么if的紧接着下面的第一行就是if体
14 if(score >= 60)
15 System.out.println("恭喜了,及格了");
16 System.out.println("恭喜了,及格了!");
17
18
19 System.out.println("程序结束");
20
21 }
22
23 }
2. if…else
语法:
if(条件判断表达式){
执行语句
}else{
执行语句
}
例子:
1 class Demo_ifelse{
2 /**
3 示例:实现程序如果分数大于60分就及格
4
5 if(条件判断表达式){
6 执行语句;
7 }else{
8 执行语句;
9 }
10 */
11
12 public static void main(String[] args){
13 //定义一个分数的变量
14 int score = 55;
15 //如果if是没有{}作为if体,那么if的紧接着下面的第一行就是if体
16 if(score >= 60){
17 System.out.println("恭喜了,及格了");
18
19 }else{
20
21 System.out.println("抱歉,你没及格");
22
23 }
24
25 System.out.println("程序结束");
26
27 }
28
29 }
小例题:
1 class Demo_ifelse2{
2 /**
3 示例:打印每个员工的工资等级,如果大于3000就是D级,
4 如果大于5000就是C级,如果大于8000就是B级,如果大于10000就是A级。
5
6
7 D:3000-5000
8 C:5000-8000
9 B:8000-1000
10 A:>10000
11 */
12
13 public static void main(String[] args){
14
15 //定义一个工资变量
16 int salary = 7000;
17
18 if(salary > 3000 && salary <=5000){
19 System.out.println("D级");
20 }
21
22 if(salary > 5000 && salary <=8000){
23 System.out.println("C级");
24 }
25
26 if(salary > 8000 && salary <=10000){
27 System.out.println("B级");
28 }
29
30 if(salary >= 10000){
31 System.out.println("A级");
32 }
33
34 }
35
36 }
3.多重if…else if…else
语法:
if(条件判断表达式){ //score >=60
执行语句;
}else if(条件表达式2){ //score < 60 && score > 30
执行语句;
}else if(条件表达式3){
执行语句;
}else{
…
}
注意:多重If 当遇到第一个满足条件表达式时执行当前的if语句,就不会再向下去执行。其后的else if条件语句一定是在满足前面的条件语句的情况下才执行。
例子:
1 class Demo_ifelseif{
2 /**
3 示例:打印每个员工的工资等级,如果大于3000就是D级,
4 如果大于5000就是C级,如果大于8000就是B级,如果大于10000就是A级。
5
6 D:3000-5000
7 C:5000-8000
8 B:8000-1000
9 A:>10000
10 */
11
12 public static void main(String[] args){
13
14 //定义一个工资变量
15 int salary = 12000;
16
17 if(salary > 10000){
18 System.out.println("A级");
19 }else if (salary > 8000){
20 System.out.println("B级");
21 }else if(salary > 5000){
22 System.out.println("C级");
23 }else if(salary > 3000){
24 System.out.println("D级");
25 }
26
27 }
28
29 }
2.Switch分支判断
switch的表达式类型和常量的类型要匹配,且只能是byte,short,char,int,string.
switch(表达式){
case 常量1:
执行语句1;
break;
//跳出switch,如果没有break会继续执行直到遇到break才跳出switch
case 常量2:
执行语句2;
break;
…
default:
执行语句;
break;
}
例子:
1 class Demo_switch{
2 /**
3 示例:根据工资的等级打印不同的*
4 1:*
5 2:**
6 3:***
7 4:****
8
9 */
10
11 public static void main(String[] args){
12 // 定义一个等级的变量
13 int grade = 4;
14 //switch的表达式类型和常量的类型要匹配,且只能是byte,short,char,int,string
15 switch(grade){
16 //如果grade的值和1相等的话就会执行相应的语句
17 case 1:
18 System.out.println("*");
19 break;
20 case 2:
21 System.out.println("**");
22 break;
23 case 3:
24 System.out.println("***");
25 break;
26 case 4:
27 System.out.println("****");
28 break;
29 default:
30 System.out.println("没有这个级别");
31 break;
32
33 }
34 System.out.println("程序结束");
35 }
36
37 }
1 class Demo_switch2{ 2 /** 3 示例:根据工资的等级打印不同的* 4 1:* 5 2:** 6 3:*** 7 4:**** 8 9 */ 10 11 public static void main(String[] args){ 12 // 定义一个等级的变量 13 String grade = "三"; 14 //switch的表达式类型和常量的类型要匹配,且只能是byte,short,char,int,string 15 switch(grade){ 16 //如果grade的值和1相等的话就会执行相应的语句 17 case "一": 18 System.out.println("*"); 19 break;//跳出switch,如果没有break会继续执行直到遇到break才跳出switch 20 case "二": 21 System.out.println("**"); 22 break;//跳出switch, 23 case "三": 24 System.out.println("***"); 25 break;//跳出switch 26 case "四": 27 System.out.println("****"); 28 break;//跳出switch 29 default: 30 System.out.println("没有这个级别"); 31 break;//跳出switch 32 33 } 34 System.out.println("程序结束"); 35 } 36 37 }
1 class Demo_switch3{ 2 /** 3 示例:打印指定年月的天数 4 5 2019 8 6 7 31:1 3 5 7 8 10 12 8 30:4 6 9 11 9 28:2月 平年 10 29:2月 闰年:如果年可以被400整除,可以被4整除但是不能被100整除 11 12 13 */ 14 15 public static void main(String[] args){ 16 17 //定义年月 18 int year = 2024; 19 int month = 2; 20 //定义一个未知的变量 21 int day = -1; 22 23 switch(month){ 24 case 1: 25 case 3: 26 case 5: 27 case 7: 28 case 8: 29 case 10: 30 case 12: 31 day = 31; 32 break; 33 case 4: 34 case 6: 35 case 9: 36 case 11: 37 day = 30; 38 break; 39 case 2: 40 if((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0) ){ 41 day = 29; 42 }else{ 43 day = 28; 44 } 45 break; 46 default: 47 System.out.println("月份不合理"); 48 break; 49 } 50 if(day != -1){ 51 System.out.println(year+"年"+month+"月有"+day+"天"); 52 } 53 System.out.println("程序结束"); 54 } 55 56 }
3.三元运算符
语法:
逻辑表达式2?表达式3:表达式4
?前面的逻辑表达式2如果运算结果是true,整个表达式的结果就是表达式3
?前面的逻辑表达式2如果运算结果式false,整个表达式的结果就是表达式4
注意:三元运算符适合两个值的判断。
表达式3和4可以是常量或变量或方法。
例子:
1 class Demo_sanyuan{ 2 /** 3 示例: 4 给定一个变量 1男 2女 5 6 */ 7 8 public static void main(String[] args){ 9 //定义一个变量 10 11 int gender = 1; 12 /* 13 if(gender == 1){ 14 System.out.println("男"); 15 }else{ 16 System.out.println("女"); 17 } 18 */ 19 //三元运算适合来代替if else的形式 20 //逻辑表达式2?表达式3:表达式4 21 //三元运算符的结果是由结果表达式的类型决定,表达式3和4的类型要一致 22 char c = gender == 1?'男':'女'; 23 System.out.println(c); 24 25 String man = "我是男"; 26 String result = gender == 1? man :"我是女"; 27 System.out.println(result); 28 29 //如果分数大于等于90为A,大于等于60为B,小于60为C 30 31 int score = 99; 32 /* 33 if(score >= 90){ 34 System.out.println("A"); 35 }else if(score >= 60){ 36 System.out.println("B"); 37 }else{ 38 System.out.println("C"); 39 } 40 */ 41 42 String result1 = score >= 90?"A":(score >= 60?"B":"C"); 43 System.out.println(result1); 44 } 45 }
4.循环结构
while
语法:
while(表达式){
循环体
}
表达式结果如果是True那么就执行循环体,如果是False就结束循环。

例子:
1 class Demo_while{ 2 /** 3 示例1:打印1到100之间的数字 4 循环条件:i<=100 5 6 7 1.变量初始化 8 2.循环条件的判断 9 3.计数器的累加 10 */ 11 12 13 public static void main(String[] args){ 14 //定义一个变量 15 int i = 1; 16 17 while(i <= 100){ 18 //打印 19 System.out.println(i); 20 //给i累加 21 i++; 22 } 23 24 System.out.println("程序结束"); 25 26 } 27 28 }
1 class Demo_while2{ 2 /** 3 示例2:打印从1到100之间所有的偶数和 4 */ 5 6 public static void main(String[] args){ 7 //定义一个计数器 8 int i = 1; 9 int total = 0; 10 11 while(i <= 100){ 12 //判断是否是偶数 13 if(i % 2 == 0){ 14 total += i; 15 } 16 //计数器的累加 17 i++; 18 19 } 20 System.out.println(total); 21 System.out.println("程序结束"); 22 23 } 24 25 }
do…while
语法:
do{
循环体
}while(表达式);
注意:do…while和while, 前者是先执行循环体,后者是先判断再执行循环体

例子:
1 class Demo_dowhile{ 2 /** 3 示例:打印从1到100之间所有的偶数和 4 5 6 */ 7 8 public static void main(String[] args){ 9 //定义一个计数器 10 int i = 1; 11 int total = 0; 12 13 do{ 14 if(i % 2 == 0){ 15 total += i; 16 } 17 //计数器累加 18 i++; 19 }while(i <= 100); 20 21 System.out.println(total); 22 } 23 24 }
1 class Demo_dowhile2{
2 /**
3 示例:打印从100到1000之间所有的水仙花数
4 234=2^3+3^3+4^3
5
6 分析:
7 循环条件:判断计数器是大于100小于1000
8 循环操作:更新计数器,判断是否为水仙花数
9
10 */
11
12
13 public static void main(String[] args){
14 //定义一个计数器
15 int i = 100;
16
17 do{
18
19 //获得个位数
20 int g = i % 10;
21 //获得十位数
22 int s =(i / 10) % 10;
23 //获得百位数
24 int b = i / 100;
25 // 判断是否为水仙花数
26 if((g*g*g + s*s*s + b*b*b ) == i){
27 System.out.println(i);
28 }
29
30 //计数器的累加
31 i++;
32 }while(i < 1000);
33
34 System.out.println("程序结束");
35 }
36
37 }
1 class Demo_dowhile3{
2 /**
3 示例:打印从100到1000之间所有的夹心饼干数
4 如:191,838
5
6 分析:
7 循环条件:判断计数器是大于100小于1000
8 循环操作:更新计数器,判断是否为夹心饼干数
9
10 */
11
12
13 public static void main(String[] args){
14 //定义一个计数器
15 int i = 100;
16
17 do{
18
19 //获得个位数
20 int g = i % 10;
21 //获得十位数
22 int s =(i / 10) % 10;
23 //获得百位数
24 int b = i / 100;
25 // 判断是否为水仙花数
26 if(g == b){
27 System.out.println(i);
28 }
29
30 //计数器的累加
31 i++;
32 }while(i < 1000);
33
34 System.out.println("程序结束");
35 }
36
37 }
for循环
语法:
for(表达式1;表达式2;表达式3){
循环体
}
表达式1:计数器的初始化,它只初始化一次
表达式2:循环条件的判断,多次执行
表达式3:修改计数器,多次执行
例子:
1 class Demo_for{ 2 /** 3 示例:打印从1到100之间所有的数字 4 5 */ 6 7 public static void main(String[] args){ 8 /* 9 //计数器的初始化 10 int i = 1; 11 //循环条件的判断 12 while(i <=100){ 13 System.out.println(i); 14 //计数器的累加 15 16 i++; 17 } 18 */ 19 for(int i = 1; i <= 100; i++){ 20 System.out.println(i); 21 } 22 23 } 24 25 }
1 class Demo_for2{
2 /**
3 示例:打印从1到100之间所有偶数和
4
5 */
6
7
8 public static void main(String[] args){
9 //定义一个结果变量
10 int sum = 0;
11
12
13 for(int i = 1; i <= 100; i++){
14 if(i %2 == 0){
15 sum +=i;
16 }
17
18 }
19 System.out.println(sum);
20 }
21
22 }
1 class Demo_for3{
2 /**
3 示例:打印5行5列的*
4 *****
5 *****
6 *****
7 *****
8 *****
9 */
10
11
12 public static void main(String[] args){
13 //外层是打印5行
14 for(int j = 0; j < 5; j++){
15 //内层是打印一行
16 for(int i = 0; i < 5; i++){
17 //打印一个*但是不换行
18 System.out.print("*");//不换行去掉ln
19 }
20 System.out.println();
21 }
22
23 }
24
25 }
1 class Demo_for4{
2 /**
3 示例:打印乘法口诀
4 1*1=1 2*1=2 3*1=3
5 1*2=2 2*2=4 3*2=6
6 1*3=3 2*3=6 3*3=9
7
8 把*前面的作为列
9 把*后面的作为行
10
11 然后再稍作修改即可得99乘法表
12 */
13
14
15 public static void main(String[] args){
16 //外层作为行循环
17 for(int i = 1; i <= 9; i++){
18 //内层作为列循环
19 for(int j = 1; j <= i ; j++){
20
21 System.out.print(j+"*"+i+"="+(j*i)+"\t");
22 }
23
24 System.out.println();
25 }
26
27 }
28
29 }
5.break和continue
break用来跳出循环和switch
continue只是跳过此次循环,但是还会继续执行循环结构
例子:
1 class Demo_break{ 2 3 /** 4 需求:运动会上跑5000米,跑到第三圈时,抽筋了退赛 5 6 */ 7 8 public static void main(String[] args){ 9 /* 10 for(int i = 1;i <= 10; i++){ 11 //如果跑到第三圈岔气了 12 if( i == 3){ 13 14 System.out.println("岔气了退出比赛"); 15 //终止当前的循环 16 break; 17 } 18 19 20 System.out.println("我跑了第"+i+"圈"); 21 } 22 23 */ 24 int i = 1; 25 while(i <= 10){ 26 //如果跑到第三圈岔气了 27 if( i == 3){ 28 29 System.out.println("岔气了退出比赛"); 30 //终止当前的循环 31 break; 32 } 33 34 35 System.out.println("我跑了第"+i+"圈"); 36 i++; 37 } 38 39 System.out.println("程序结束"); 40 } 41 42 }
1 class Demo_continue{
2
3 /**
4 需求:一周上五天班,然后周三请一天假
5
6 */
7
8 public static void main(String[] args){
9
10 for(int i = 1; i <=5; i++){
11 if(i == 3){
12 System.out.println("星期"+i+"请假");
13 //终止本次循环,但是后面的循环要继续执行
14 continue;
15 }
16
17 System.out.println("星期"+i+"上班");
18 }
19
20 System.out.println("程序结束");
21 }
22
23 }


浙公网安备 33010602011771号