Java基础之流程控制语句
1 流程控制语句
1.1 流程控制语句分类
-
顺序结构
-
分支结构(if、switch)
-
循环结构(for、while、do…while)
1.2 if语句
1.2.1 if语句格式1
- 格式:
if(关系表达式) {
语句体;
}
- 执行流程:
1、首先计算关系表达式的值
2、如果关系表达式的值为true就执行语句体
3、如果关系表达式的值为false就不执行语句体
4、继续执行后面的语句内容
1.2.2 if语句格式2
- 格式:
if(关系表达式) {
语句体1;
}else {
语句体2;
}
- 执行流程:
1、首先计算关系表达式的值
2、如果关系表达式的值为true就执行语句体1
3、如果关系表达式的值为false就执行语句体2
4、继续执行后面的语句内容
1.2.3 if语句格式3
- 格式:
if(关系表达式1) {
语句体1;
}else if(关系表达式2){
语句体2;
}
...
else {
语句体n+1;
}
- 执行流程:
1、首先计算关系表达式1的值
2、如果值为true就执行语句体1;如果值为false就计算关系表达式2的值
3、如果值为true就执行语句体2;如果值为false就计算关系表达式3的值
…
4、如果没有任何关系表达式值为true就执行语句体n+1
1.3 switch语句
- 格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break; //最后一个可以省略
- 格式说明
- 表达式:取值为byte、short、int、char,JDK5以后可以是枚举,JDK7以后可以是String
- case:后面跟的是要跟表达式比较的值
- break:表示中断结束的意思,用来结束switch语句
- default:表示所有情况都不匹配的时候,就执行该处内容,和if语句中的else相似
- 执行流程:
1、首先计算表达式的值
2、以此和case后面的值进行比较,如果有对应值,就会执行相应语句,在执行过程中,遇到break就会结束
3、如果所有的case的值和表达式的值都不匹配,就会执行default里面的语句体,然后程序结束
-
注意事项:在switch语句中,如果case控制的语句后面不写break,将会出现 穿透 现象,在不判断下一个case的情况下,向下运行,直到遇到break,或者整体程序结束
-
案例:初夏秋冬(case穿透)
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个月份");
int month = sc.nextInt();
switch(month) {
//case穿透
case 1:
case 2:
case 12:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("你输入的月份有误");
}
}
}
1.4 for循环语句
- 格式:
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
- 流程图
- 执行流程
1、执行初始化语句
2、执行条件判断语句,且看结果是true还是false
如果是false,循环结束;如果是true,继续执行
3、执行循环体语句
4、执行条件控制语句
5、返回到2继续
案例:水仙花数
- 什么是水仙花数?
1、水仙花数是一个三位数
111 333 456 999 530
2、水仙花数的个位、十位、百位的数字立方和等于原数
- 怎么获取个位、十位、百位上的数
1、个位数
371 ;1就是原始数字对10进行取余的运算结果;371 % 10 = 1
2、十位数
7;371通过除以10,可以将7移动到个位上去(整数);371 / 10 = 37
37 ;37对10进行取余可以得到最后一位的值7; 37 % 10 = 7
3、百位数
3 ; 3就是原始数字除以100的结果(整除);371 /100 = 3
4、思考:任意数字的指定位置上的数值如何求?
123456789 ; 先10000得到12345;再对10取余得到5
public class Demo {
public static void main(String[] args) {
for(int i=100;i<=999;i++) {
int a = i % 10; //个位
int b = i / 10 % 10; //十位
int c = i / 100 ; //百位
if(a*a*a + b*b*b + c*c*c == i) {
System.out.println("水仙花数:"+i); //有153、370、371、407
}
}
}
}
1.5 while循环语句
-
用法:用来描述未知次数循环
-
格式:
初始化语句;
while(条件判断语句) {
循环体语句;//比如:输出内容
条件控制语句;
}
- 执行流程:
1、执行初始化语句;
2、执行条件判断语句,看其结果为true还是false
如果是false,循环结束;如果是true,继续执行
3、执行循环体语句
4、执行条件控制语句
5、回到2继续
1.6 do…while循环语句
- 格式:
初始化语句;
do{
循环体语句;//比如:输出内容
条件控制语句;
}while(条件判断语句);
- 执行流程:
1、执行初始化语句
2、执行循环体语句
3、执行条件控制语句
4、执行条件判断语句,看其结果为true还是false
如果是false,循环结束;如果是true,继续执行
5、回到2继续
1.7 三个循环的区别
1.7.1 第一
-
do…while:先输出一次再进行判断(最少输出一次)
-
for、while:先判断再输出
1.7.2第二
-
for循环结束后变量不能使用
-
while循环结束后还可以使用(打印变量次数)
1.7.3死循环
- for语句
for(;;){
System.out.println("死循环");
}
- while语句
while(true){
System.out.println("死循环了");
}
- do…while语句
do{
System.out.println("死循环");
}while(true);
1.8 跳转控制语句
-
continue:用于循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次执行
-
break:用于循环中,基于条件控制,终止循环体内容执行,结束当前整个循环
-
范例:
public class Demo {
public static void main(String[] args) {
for(int i=1;i<=5;i++) {
if(i%2==0) {
//continue; //为偶数时跳过输出,1 3 5
break; //当遇到偶数终止循环,只输出1
}
System.out.println(i);
}
}
}
1.9 循环嵌套
public class Demo {
public static void main(String[] args) {
//九九乘法表
for(int i=1;i<=9;i++) {
for(int j=1;j<=i;j++) { //j<=i,当i=1时,j=1,输入一次后循环结束;i的值加1,i=2,j=1,输出两次后跳出...
System.out.print(i +"*"+j + "=" + i*j +" ");
}
System.out.println();
}
}
}
- 点赞
- 收藏
- 关注作者
评论(0)