java入门-----执行语句(下)
3.2 while循环
while循环
语法结构:
while(表达式){
…代码块…
}理解:
表达式的结果必须是boolean
true - 执行代码块
false- 跳出循环
死循环:
while(true){
System.out.println(“死循环”);
}
while循环变形记:while循环可以表示for循环
int i = 0;
while(i < 5){
System.out.println("循环五次");
i++;
}
案例:我有个梦想,每月存3000,每年递增1000元,多少个月后存满20万
int money = 3000;
int allMoney = 0;
int month = 0;
while(allMoney < 200000){
allMoney+=money;
month++;
if(month % 12 == 0){
money+=1000;
}
}
System.out.println(month + "个月以后存满20万 " + money);
46个月以后存满20万 6000
3.3 do-while循环
do-while循环
语法结构:
do{
…代码块…
}while(表达式);
理解:
表达式的结果必须是boolean
true - 执行代码块
false- 跳出循环
执行顺序:
1.先执行一遍代码块
2.判断表达式
2.1 true - 执行代码块,再重复第2个步骤
2.2 false- 跳出循环死循环:
do{
System.out.println(“死循环”);
}while(true);
案例:小明参加学校组织的歌咏比赛,
大赛在即,老师建议:先彩排一次,如果很令人满意,
以后就不用彩排了,否则每天都排,直到现场表现满意为止!
Scanner scan = new Scanner(System.in);
String str;
do{
System.out.println("小明开始表演");
System.out.println("评委老师请给出意见");
str = scan.next();
}while(str.equals("不满意"));
给出满意,结束排练;不满意则继续排练
总结:循环次数不确定
for vs while vs do-while
语法结构的区别:
for(初始化变量;判断条件;更新变量){}
while(判断条件){}
do{}while(判断条件);
循环共同点:判断条件的结果都是boolean值,true-循环 false-跳出循环
执行顺序的区别:
for:先判断,再执行
while:先判断,再执行
do-while:先执行一遍,再判断
应用场景的区别:
循环次数确定:for
循环次数不确定,先判断,再执行:while
循环次数不确定,先执行一遍,再判断:do-while
4.特殊的流程控制语句
4.1 break
break
作用:作用于循环中,表示跳出当前循环
while(true){
System.out.println("111");
System.out.println("222");
if(true){
break;
}
System.out.println("333");
System.out.println("444");
}
输出的结果是:
111
222
案例:循环录入小明同学5门课的成绩并计算平均分,
如果某分数录入为负停止录入并提示。
Scanner scan = new Scanner(System.in);
double sum = 0;
boolean flag = true;//true-5次正常录入 false-有输入负数的情况
for(int i = 1;i<=5;i++){
System.out.println("请输入第" + i + "门成绩:");
double score = scan.nextDouble();
if(score < 0){
flag = false;
break;
}
sum+=score;
}
if(flag){
double avg = sum/5;
System.out.println("平均分为:" + avg);
}else{
System.out.println("分数为负数,停止录入");
}
4.2 continue
作用:作用于循环中,表示跳过当前循环剩余的部分,进入到下一次循环
while(true){
System.out.println("111");
System.out.println("222");
if(true){
continue;
}
System.out.println("333");
System.out.println("444");
}
输出结果是:
111
222
111
222
…无限循环。只跳过了每次循环的后半截
案例:循环录入Java课5名学生的成绩,
统计分数大于等于80分的学生比例。
Scanner scan = new Scanner(System.in);
int num = 0;//记录成绩大于等于80分学生的人数
for(int i = 1;i<=5;i++){
System.out.println("请输入第" + i + "名学生的成绩:");
double score = scan.nextDouble();
if(score < 80){
continue;
}
num++;
}
System.out.println("分数大于等于80分的学生比例为:" + (num/5.0*100) + "%");
4.3 return
作用:作用于方法中,表示结束该方法
public static void main(String[] args){
System.out.println("111");
System.out.println("222");
if(true){
return;
}
System.out.println("333");
System.out.println("444");
}
return会直接结束整个main方法
return还会用于方法的返回值,后期进行详解。。。
4.4 lable
lable不同于上述三种控制语句,lable是一种方法,不是关键字;
可以理解为:给循环语句命名
http:for(int i=0;i<5;i++){
System.out.println("123123");
}
将此循环for命名为http ;
案例:
嵌套for循环,外层循环5次,内层循环3次,
外层循环到第3次时,在内层循环中退出外层循环
for(int i = 1;i<=5;i++){
for(int j = 1;j<=3;j++){
System.out.println(i + " -- " + j);
if(i == 3){
break ;
}
}
}
此处break会停止内层循环,达不到需求
a:for(int i = 1;i<=5;i++){
for(int j = 1;j<=3;j++){
System.out.println(i + " -- " + j);
if(i == 3){
break a;
}
}
}
通过lable将外层循环命名为a,break就可以停止指定循环;