流程控制语句分类:
选择结构 : 满足条件执行对应的代码
循环结构 : 让一些代码重复不停的执行多次
选择结构:
if选择语句:
单选择|单分支
if(条件表达式){
满足条件执行的代码段;
}
//if单选泽
int i = -1;
System.out.println("if开始了");
if(i==0){
System.out.println("i=0");
}
System.out.println("if结束了");
双选择|双分支
if(条件表达式){
满足条件执行的代码段;
}else{
不满足条件执行的代码段;
}
//双选择
if(i>0){
System.out.println("i>0");
}else{
System.out.println("i<=0");
}
多选择|多分支
if(条件表达式1){
满足条件表达式1执行的语句体1;
}else if(条件表达式2){
满足条件表达式2执行的语句体2;
}else if(条件表达式3){
满足条件表达式3执行的语句体3;
}.....
else{
如果以上都不满足执行得到语句体n;
}
//多选择
if(i==0)
System.out.println("i=0");
else if(i<0)
System.out.println("i<0");
else{
System.out.println("i>0");
System.out.println("测试是否能够被if语句体结构控制");
}
switch 选择语句
能用if的不一定能用switch,能用switch都能使用if
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
....
default:
语句体n;
break;
}
public class Class003_Switch{
public static void main(String[] args){
//信号灯
String flag = "粉灯";
switch(flag){
case "红灯":
System.out.println("红灯停");
break;
case "绿灯":
System.out.println("绿灯行");
break;
case "黄灯":
System.out.println("黄灯等一等");
break;
default:
System.out.println("你是不是色弱!!!!");
break;
}
//case穿透
//季节判定通过switch实现 利用case穿透的写法
int month = 12;
switch(month){
case 3:
case 4:
case 5:
System.out.println(month+"月份为春季");
break;
case 6:
case 7:
case 8:
System.out.println(month+"月份为夏季");
break;
}
}
}
break : 终止当前的switch语句
如果没有break会发生case穿透 : 从当前满足条件的语句体开始执行,一直向下 穿透,无论下面的case是否满足条件都不再判断,直接执行语句体,
直到遇到下一个break或者switch语句的结束而结束
default : 与else相同
以上的case都不满足,name就执行default中的内容
位置可以在switch语句中的任意位置
一般定义在switch语句的最后,如果切换位置,注意break定义
一对{}中的内容就要缩进一个tab键
循环结构
for循环
for(条件初始化;条件判断;条件变化 ){
重复执行的语句体;
}
条件初始化 : 声明一个变量i并且第一次赋值 -->i条件
条件判断 : 对变量的i判断
决定循环是否结束
条件变化|迭代因子 : 变量i自身值的改变
//通过循环,输出10次
for(int i=100;i<=200;i++)
//再循环的循环体中可以使用循环的条件i
System.out.println("明天的你,会感谢今天努力的自己!!!!"+i);
//System.out.println(i); 错误: 找不到符号
//计算-~10之间的整数和
int sum = 0; //记录和
for(int i=1;i<=10;i++){
//System.out.println(i);
sum+=i;//sum = sum+i;
}
System.out.println(sum);
注意:
for循环的变量条件i只属于当前 for循环,只能在循环中使用
for可以通过条件的变化控制循环的次数,循环体中可以使用条件的值,条件变量可以按照想要的逻辑进行变化,实现需求
考虑: 是否存在一些代码重复执行,如果是,规律可循,可以选择使用循环结构
如果循环体语句只有一句,前后的{}可以省略
while循环
条件初始化;
while(条件判断){
循环体;
条件变化;
}
//输出1~10之间的整数
for(int i=1;i<=10;i++){
System.out.println(i);
}
//for循环的条件i属于当前for循环
//条件初始化
int i = 1;
while(i<=10){ //条件判断
//循环体语句
System.out.println(i);
//条件变化
i++;
}
System.out.println(i);
for循环适用于: 确定循环次数,确定条件变量变化的区间,确定变化的规律
while循环适用于: 在循环开始之前已经存在了判断条件变量,条件的变化不需要自己控制,不确定循环次数
do..while循环
while(条件判断){
语句体;
}
while循环先判断后执行
do{
循环体;
}while(条件判断);
do..while先执行后判断
//区别
do{
System.out.println("do..while");
}while(false);
boolean flag = false;
while(flag){
System.out.println("while"); //无法访问的语句
}
//正常使用
int sum = 0 ;
int i = 1;
while(i<=10){
sum+=i;
i++; //条件变化
}
System.out.println(sum);
System.out.println(i);
区别: do...while无论是否满足条件,都至少执行一次
break 与 continue 关键字的区别:
break:
作用: 打破,终止,停止,结束
应用场景: switch| 循环中
continue:
作用: 结束当前本次循环 ,直接进入到下一次循环
应用场景: 循环中
//输出1~10之间的整数,遇到3或者3的倍数跳过
for(int i=1;i<=10;i++){
if(i%3==0){
continue;
}
System.out.println(i);
}
//找到前5个被5整除的整数,在100~300之间,输出打印
int count = 0; //计数器
for(int i=100;i<=300;i++){
if(i%5==0){
System.out.println(i);
count++;
//停止条件
if(count==5){
break;
}
}
}
循环嵌套
循环中定义循环
for(条件初始化;条件判断;条件变化){
循环体语句;
for(条件初始化;条件判断;条件变化){
循环体语句;
}
循环体语句;
}
外层循环执行一次,内层循环执行一轮(从开始到结束)
for(int i=1;i<=8;i++){
for(int k=1;k<=8;k++){//k为列数
if(i==1||i==8||k==1||k==8){//打印条件
System.out.print("* ");
}else{
System.out.print(" ");
}
}
System.out.println();
}
System.out.println();
System.out.println();
//九九乘法表打印
for(int i=1;i<=9;i++){//i为行数
for(int n=1;n<=i;n++){//列数
System.out.print(n+"*"+i+"="+(i*n)+"\t");
}
System.out.println();
}
循环嵌套下的break与continue使用
默认针对: 多层循环嵌套下,默认针对内层循环
带标签的break|continue:
在循环开始位置定义标签 标签名:
使用break|continue的时候,指定针对哪一层循环进行操作 break 标签名;
//行
one:
for(int i=1;i<=5;i++){
//列
two:
for(int j=10;j<=15;j++){
if(j==13){
break one;
}
System.out.print(i+"----->"+j+"\t");
}
System.out.println();
}