一,while循环
1.语法结构:
while(表达式){
....代码块/循环体.....
}
2.理解:
表达式的结果必须是boolean类型 ,true---执行代码块,false--跳出 循环体
3.案例
//案例:用while循环,打印五遍HelloWorld
int i=1;
while(i<=5){
System.out.println("HelloWorld");
i++;
}
//案例2 小明每月存3000,每年递增1000元,多少个月后存满20万
int allMoney =0;
int month=0;
int money =3000;
while(allMoney<=200000){
allMoney+=money;
month++;
if(month%12==0){
money+=1000;
}
System.out.println(month+"个月后存满20万");
}
二,do-while循环
1.语法结构:
do{
.....代码块/循环体.....
}while(表达式);
2.理解:
首选执行一遍代码块,在去判断表达式,表达式的结果必须boolean 类型, true---执行代码块, false----跳出循环体
三,for VS while VS do-while
1.表达式的区别:
for(初始化变量;判断条件;更新变量){}
while(判断条件){}
do{}while{判断条件}
共同点:判断条件的结果必须是boolean类型,true代表执行,false跳出
2.执行顺序的区别
for:先判断,再执行
while:先判断,再执行
do-while:先执行,再判断
3.应用场景的区别:
循环次数确定:----for
循环次数不确定,且先判断:while
循环次数不确定,且先执行一遍:do-while
四,特殊流程控制语句
1.break
1.理解:作用在循环中,表示跳出整个循环语句
2.案例:
循环录入小明五门课程的成绩并计算平均分,如果某分数录入为负数,停止录入并提示
import java.util.Scanner;
public class Test01{
public static void main(String[] args){
Scanner scan= new Scanner(System.in);
boolean falg =true;
double sum= 0;
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("分数为负数,停止录入");
}
}
}
2.continue
1.理解:
作用于循环中,表示跳过循环体剩余的部分,进到下一次循环
2.案例
循环录入五名学生的成绩,统计分数高于80分学生的比例
Scanner scan =new Scanner(System.in)
int count =0;
for(int i =1;i<=5;i++){
System.out.println("请输入你的成绩:");
double score = scan.nextDouble();
if(score<80){
continue;
}
count++;
}
double proportion =count/5.0*100;//使int类型数据精确到小数点后一位
System.out.println("分数大于80的学生比例为:"+proportion);
3.return
1.理解
作用在方法中,表示结束该方法(后续学习)
4.label
理解:给循环取名字(做标记)
五:循环练习题
案例1:
请输出2-100中的素数
for(int i =2;i<=100;i++){
boolean flag =true; //true 代表就是素数
for(int num =2;num<i;num++){
if(i%num==0){
flag=false;
break;
}
}
if(flag){
System.out.println(i+"是素数");
}
}
案例2:
模拟ATM取款机的三次密码校验,当天达到3次输入密码错误,则提示“账号被冻结”,其他情况则提示还有多少此输入机会
Scanner scan = new scanner(System.in);
int count =3;
while(count>=1){
System.out.println("请输入密码:");
String passWord =scan.next();
if(passWord.equals("123456")){
System.out.println("随便取款");
break;
}else{ //密码错误
count--;
if(count==0){//输入密码的次数用完了
System.out.println("银行卡被冻结,请前往银行");
break;
}
System.out.println("你还有"+count+"次机会");
System.out.println("是否继续输入?继续按y,退出按任意键");
String str = scan.next();
if(!str.equals("y")){
System.out.println("感谢你使用**银行系统");
break;
}
}
}
案例3
循环录入2个班的学员成绩,假设每个班都有3个学员,依次录入,统计超过90分的学员人数,以及这批超过90分的学员的平均分
Scanner scan =new Scanner(System.in);
int count =0; //超过90分学生的人数
int sum =0; //超过90分学生的总分
for(int i=1;i<=2;i++){
for(int j= 1;j<=3;j++){
System.out.println("请输入第"+i+"个班的第"+j+"名学生的成绩");
double score =scan.nextDouble();
if(score>90){
count++;
sum+=score
}
}
}
System.out.println("超90分人数为:"+count);
double avg = sum/count;
avg = (int)(avg*100)/100.0;//目的是为了保留两位小数
System.out.println("超90分学生的平均分为:"+avg);
案例4
使用while循环计算1-100之间偶数之和
int sum =0;
int i =1;
while(i<=100){
if(i%2==0){
sum+=i;
}
i++;
}
System.out.println(sum);
标签:count,Java,Scanner,int,System,while,循环
From: https://blog.csdn.net/2401_87491344/article/details/142579733