顺序结构
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数代码都是这样执行的。
流程控制
- 分支
- 循环
- 判断
分支与判断
if 语句的注意事项
- 关系表达式的结果必须为 boolean 类型
- if 语句控制体如果是一条语句,大括号可以省略
if(表达式 1){
//分支 一
}else if(表达式 2){
//分支 二
}else{
//分支 三
}
if 判断要注意的数据处理
- 正确数据
- 错误数据
- 边界数据
选择结构(switch语句)
switch 表示这是 switch 语句
格式:
case 后面是要和表达式进行比较的值
break; 表示中断,结束的意思
default: 当所有值都和表达式不匹配时,执行 default
switch(表达式){
case 值1:
语句体 1;
break;
case 值2:
语句体 2;
break;
default:
语句体;
break; // 最后的 break 可以省略
}
表达式的取值
- 取值有 byte short int char
- jdk5 以后可以是枚举
- jdk7 以后可以是 string
注意
- case 后面只能是常量,不能是变量
- case 后面的值不能重复
- default 可以省略,但是不建议
- break 可以省略,但是会出现 case 穿透,建议不省略
- 程序遇 break 或执行到末尾结束
if 语句 和 switch 的区别
- if语句
- 针对布尔类型
- 针对一个范围的判断
- 针对几个常量值的判断
- switch 语句
- 针对几个常量值的判断
循环
循环语句的组成
- 初始化语句
- 判断条件语句 (boolean)
- 循环体语句
- 控制条件语句
while 循环语句 (布尔循环)
如果是一个明确范围的循环,用 for
如果是不明确要做多少次,用 while 循环较为合适
比如,吃葡萄:
不管多少颗,只要有,我就吃,没了就不吃
while(判断条件语句){
//循环体语句;
//控制条件语句;
}
do...while 循环
do...while 至少执行一次循环体
//初始化语句;
do{
//循环体语句;
//控制条件语句;
}
}while(判断条件语句);
注意死循环
- 控制条件语句
- while(true)
- for( ; ; )
跳转循环控制语句
- break 跳出单层循环
- continue 跳出本次循环,进入下一次执行
- return 返回
return 的作用不是结束循环的,面是结束方法
break 跳出指定循环
//给循环起个名字
for1:for(int x=0;x<10;x++){
for2:for(int y=0;y<10;y++){
if(y == 5){
//break for1; 跳出外层循环
//break for2; 跳出内层循环
}
}
}
练习题
小明的妈妈每天给他 2.5 元,他会存起来,存到第五天或者五的倍数天的时候会花掉 6 元,问什么时候存够 100 元
//不知道要循环多少次,所以用死循环,当条件满足时,用 break 结束循环
int day = 1; // 天
double money = 0; // 钱
while(true){
money += 2.5;
if(money >= 100){
System.out.println("第"+day+"天存够了100元");
break;
}
if(day % 5 == 0){
money -= 6;
System.out.println("第"+day+"天花了6元钱");
}
day ++;
}