Java中do-while循环存储用户输入及自助结账清单打印问题
解决超市自助结账程序的数组存储问题
要实现存储所有商品信息并计算总金额,核心是用数组保存每一件商品的名称和价格,而非用单个变量覆盖之前的数据。下面是完整实现代码及关键说明:
完整代码实现
import java.util.Scanner; public class SelfCheckout { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 定义数组存储商品信息,最多支持10件 String[] itemNames = new String[10]; double[] itemPrices = new double[10]; int itemCount = 0; // 记录已添加的商品数量 boolean addMore; do { if (itemCount >= 10) { System.out.println("已达到最大商品数量(10件),无法继续添加"); break; } // 输入当前商品信息 System.out.print("请输入第" + (itemCount + 1) + "件商品的名称:"); itemNames[itemCount] = scanner.nextLine(); System.out.print("请输入第" + (itemCount + 1) + "件商品的价格:"); itemPrices[itemCount] = scanner.nextDouble(); scanner.nextLine(); // 清除输入缓冲区的换行符 // 询问是否继续添加 System.out.print("是否添加更多商品?(yes/no):"); String choice = scanner.nextLine().toLowerCase(); addMore = choice.equals("yes"); itemCount++; // 商品数量递增 } while (addMore); // 打印购物清单并计算总金额 System.out.println("\n--- 购物清单 ---"); double total = 0.0; for (int i = 0; i < itemCount; i++) { System.out.println("商品" + (i + 1) + ": " + itemNames[i] + ",价格:" + itemPrices[i] + "元"); total += itemPrices[i]; } System.out.println("----------------"); System.out.println("总金额:" + total + "元"); scanner.close(); } }
关键逻辑说明
- 数组存储:用
String[] itemNames和double[] itemPrices两个数组分别保存商品名称与价格,长度设为10对应最大商品限制。 - 计数器控制:
itemCount既作为数组的索引位置标记,也用来后续遍历打印时确定有效商品的范围(避免打印未使用的数组空位)。 - 循环终止条件:循环内先判断是否已达10件商品,是则直接退出;否则根据用户输入的
yes/no决定是否继续添加。 - 清单与总价计算:通过for循环遍历数组的前
itemCount个元素,逐个打印商品信息并累加价格得到总金额。
示例输出
请输入第1件商品的名称:牛奶 请输入第1件商品的价格:3.5 是否添加更多商品?(yes/no):yes 请输入第2件商品的名称:面包 请输入第2件商品的价格:5.0 是否添加更多商品?(yes/no):no --- 购物清单 --- 商品1: 牛奶,价格:3.5元 商品2: 面包,价格:5.0元 ---------------- 总金额:8.5元
内容的提问来源于stack exchange,提问作者Rashad F
相关产品推荐
相关产品推荐

