Java循环逻辑咨询:如何在getChange后实现输入-1退出程序
Java找零程序循环逻辑解决方案
用do-while循环就能完美解决你的需求,因为它会先执行一次完整的业务流程,再根据用户输入判断是否继续循环,完全匹配你“先执行找零,再选择退出或重来”的逻辑。
直接看代码示例,把整个流程塞进do-while的循环体里:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int userChoice; do { // 1. 输入账单和付款金额 System.out.print("输入账单金额:"); double bill = scanner.nextDouble(); System.out.print("输入付款金额:"); double payment = scanner.nextDouble(); // 2. 创建新的MakeChange对象并执行找零 MakeChange change = new MakeChange(bill, payment); change.getChange(); // 3. 提示用户选择 System.out.print("输入-1退出,输入其他任意整数继续:"); userChoice = scanner.nextInt(); scanner.nextLine(); // 处理输入后的换行,避免后续读取异常 } while (userChoice != -1); // 只要不是-1就重复流程 scanner.close(); System.out.println("程序已退出"); } }
关键说明:
- 循环体包裹了全部流程:从输入金额、创建对象到执行找零,再到用户选择,确保每次循环都是全新的一轮操作。
- do-while的特性是先执行循环内容,再判断条件,刚好符合你“必须先跑一次找零,再问用户要不要继续”的要求。
- 最后加的
scanner.nextLine()是为了吃掉nextInt()留下的换行符,避免下一次nextDouble()读取到空内容导致报错。
如果非要用while循环,就得先初始化userChoice为非-1的值,比如int userChoice = 0;,然后把判断条件放在开头,但这样不如do-while直观,没必要多此一举。
内容的提问来源于stack exchange,提问作者okcarl
相关产品推荐
相关产品推荐

