do-while循环
基本语法
循环结构四要素
:
- 初始化部分
- 循环条件部分
- 循环体部分
- 迭代部分
语法格式:
①初始化部分;
do{
③循环体部分
④迭代部分
}while(②循环条件部分)
**执行过程:**①-③-④-②-③-④-②-③-④-…-②
图示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2M473m1E-1689735603954)(F:\BaiduNetdiskDownload\image-20220512165558698.png)]
说明:
- 结尾while(循环条件)中循环条件必须是boolean类型
- do{}while(); 最后有一个分号
- do-while结构的循环体语句是至少会执行一次,这个和for和while是不一样的
- 循环的三个结构for、while、do-while三者是可以相互转换的
应用距离
**案例1:**遍历1-100的偶数,并计算所有偶数的和、偶数的个数(累加的思想)
public class DoWhileTest1{
public static void main(String[] args){
int count = 0;
int sum = 0;
int i = 1;
do{
if(i % 2 == 0){
System.out.println(i);
sum += i;
count++;
}
i++;
}while(i<=100);
System.out.println("共有"+count+"个偶数");
System.out.println("和为"+sum);
}
}
**案例2:**体会do-while至少会执行一次循环体
int num = 10;
while(num > 10){
System.out.println("hello While"); //while 不输出
num--;
}
int num1 = 10;
do{
System.out.println("hello While"); //do-while输出 hello While
num1--;
}while(num > 10);
案例3:ATM取款
声明变量balance并初始化为0,用以表示银行账户的余额,下面通过ATM机程序实现存款,取款等功能。
=========ATM========
1、存款
2、取款
3、显示余额
4、退出
请选择(1-4):
/*
整体思路:
1.先初始化总金额
2.声明ATM界面
3.通过Scanner获取用户的选择
4.根据用户的输入选择相应的服务
*/
import java.util.Scanner;
public class ATMTest{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
double balance = 0.0;
boolean isFlog = true; //控制循环的结束
do{
System.out.println("=========ATM========");
System.out.println("\t1、存款");
System.out.println("\t2、取款");
System.out.println("\t3、显示余额");
System.out.println("\t4、退出");
System.out.print("请选择(1-4):");
int num = scan.nextInt();
switch(num){
case 1:
System.out.print("请输入你存款的金额:");
double cun = scan.nextDouble();
if(cun > 0){
balance += cun;
}
break;
case 2:
System.out.print("请输入你取款的金额:");
double qu = scan.nextDouble();
if(qu > balance && qu > 0){
System.out.println("余额不足");
}else{
balance -= qu;
}
break;
case 3:
System.out.println("余额为:"+balance);
break;
case 4:
System.out.println("欢迎下次进入");
isFlog = false;
break;
default:
System.out.println("请重新选择!");
break;
}
}while(isFlog);
scan.close();
}
}
练习
**练习1:**随机生成一个100以内的数,猜这个随机数是多少?
从键盘输入数,如果大了提示,大了;如果小了,提示小了;如果对了,就不再猜了,并统计一共猜了多少次。
import java.util.Scanner;
public class DoWhileTest11{
public static void main(String[] args){
int random = (int)(Math.random()*100);
System.out.println(random);
Scanner scan = new Scanner(System.in);
System.out.println("请输入猜测的数:");
int guess = scan.nextInt();
int count = 1;
do{
if(guess > random){
System.out.println("猜大了");
}else{
System.out.println("猜小了");
}
System.out.println("请输入猜测的数:");
guess = scan.nextInt();
count++;
}while(guess != random);
System.out.println("猜了"+count+"次");
scan.colse();
}
}
对比三种循环结构
-
三种循环结构都具有四个要素
- 循环变量的初始化条件
- 循环条件
- 循环体语句
- 循环变量的修改的迭代表达式
-
从循环次数角度分析
- do-while循环至少执行一次循环体语句
- for和while循环先判断循环条件语句是否成立,然后决定是否执行循环体
-
如何选择
-
遍历有明显的循环次数(范围)的需求下,选择for循环
-
遍历没有明显的循环次数(范围)的需求,选择while循环
-
如果循环体语句块至少执行一次,可以考虑使用do-while循环
环次数角度分析 -
do-while循环至少执行一次循环体语句
-
for和while循环先判断循环条件语句是否成立,然后决定是否执行循环体
-
-
如何选择
- 遍历有明显的循环次数(范围)的需求下,选择for循环
- 遍历没有明显的循环次数(范围)的需求,选择while循环
- 如果循环体语句块至少执行一次,可以考虑使用do-while循环
- 本质上:三种循环之间完全可以互相转换,都能实现循环的功能