PAGE232
想象一下在健身房锻炼的场景。利用do……while循环表示:
先做一次训练(循环体执行)
然后看看效果(条件判断)
决定是否继续(是否进入下一次循环)
这和while循环不同,while循环是先在门口看看人多人少才决定进不进去。而do……while是二话不说先练起来再说!
do……while语法结构
do……while结构保证了循环体至少执行一次,然后根据条件决定是否继续;就像至少会尝试一次健身,然后根据感受决定要不要继续。
案例解析
用户密码验证
编写一个程序看,模拟用户登录时的密码验证。
运行结果
输入3次错误的密码
请输入密码:123456
密码错误!您已尝试1次
请输入密码:456123
密码错误!您已尝试2次
请输入密码:789456
密码错误!您已尝试3次
尝试次数过多,账户已锁定
输入正确密码
请输入密码:java123
登录成功!
代码解析:
程序首先会要求用户输入密码(至少执行一次)
检查密码是否正确,并记录尝试次数
当密码错误且尝试次数小于3次时,继续循环
退出循环后根据情况输出相应提示
这个例子很好地展示了do...while的特点,至少要给用户一次输入机会。
购物车结算系统
编写一个程序,模拟电商网站购物车结算系统。
代码运行效果:
依次输入产品和价格。
===欢迎来到Java超市结算系统===
请输入商品名称:牛奶
请输入商品价格:12.5
已添加牛奶到购物车,当前总计:12.50元
是否继续购物?(y/n):y
请输入商品名称:面包
请输入商品价格:8.8
已添加面包到购物车,当前总计:21.30元
是否继续购物?(y/n):n
购物结算完成,总金额:21.30元
感谢您的光临!
常见错误及解决方法
忘记分号
解决方法:记住while后面的小括号外必须加分号。
条件永远为真导致无限循环
解决方法:确保循环条件最终会变为false。
错误的条件判断
解决方法:理解do...while至少执行一次的特性,确保逻辑正确
练习题
理论练习题
do...while循环和while循环最主要的区别是什么?
答案:do...while循环至少执行一次循环体,而while循环可能一次都不执行。
下列代码会输出什么?
答案:输出54321,因为从5递减到1,当x=0时退出循环。
什么情况下应该优先选择do...while而不是while循环?
答案:当需要至少执行一次循环体时,比如菜单显示、用户输入验证等场景。
如果超市结算系统改用while循环实现,会有什么潜在问题?
答案:使用while循环时,如果用户一开始就选择不购物,程序会变得很奇怪。而do...while确保至少执行一次结算流程,更符合实际场景
下面这段代码有什么问题?
答案:虽然循环条件初始就不满足,但do...while仍会执行一次,输出5。这可能不是程序员的本意,需要注意这种特性。
为什么购物车案例中使用charAt(0)来获取用户输入?
答案:Scanner的next()方法返回字符串,而我们需要单个字符做判断。charAt(0)取字符串第一个字符,既简化输入又避免字符串比较的开销。
实操练习题
编写一个程序,使用do...while循环计算1到100的偶数和
运行结果
1到100的偶数和为:2550