如何在循环中接收控制台输入并创建ProductMaster类实例添加到列表
没问题!我来帮你搞定这个需求。你想要通过循环读取控制台输入,动态创建ProductMaster实例并添加到列表中,下面是完整的可运行实现,附带关键部分的说明:
动态创建ProductMaster实例并添加到列表的实现方案
首先我们需要借助Scanner类来读取控制台输入,然后在循环中收集产品信息、创建实例并加入列表。这里我会补全你的类代码,同时实现核心功能:
完整代码示例
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class ProductMaster { String productName; double productPrice; // 补全你提到的其他字段 int discountQuantity; double discountPrice; // 无参构造器 ProductMaster() { } // 带参构造器(匹配你给出的参数定义) ProductMaster(String prodN, double prodP, int discQ, double discP) { this.productName = prodN; this.productPrice = prodP; this.discountQuantity = discQ; this.discountPrice = discP; } public static void main(String[] args) { // 创建存储产品实例的列表 List<ProductMaster> productList = new ArrayList<>(); Scanner inputScanner = new Scanner(System.in); // 先让用户指定要创建的产品数量,也可以改成无限循环(比如输入exit结束) System.out.print("请输入要创建的产品总数:"); int totalProducts = inputScanner.nextInt(); inputScanner.nextLine(); // 读取残留的换行符,避免后续读取字符串出错 // 循环创建产品实例 for (int i = 0; i < totalProducts; i++) { System.out.println("\n===== 输入第" + (i + 1) + "个产品信息 ====="); System.out.print("产品名称:"); String prodName = inputScanner.nextLine(); System.out.print("产品原价:"); double prodPrice = inputScanner.nextDouble(); System.out.print("折扣门槛数量:"); int discQty = inputScanner.nextInt(); System.out.print("折扣后价格:"); double discPrice = inputScanner.nextDouble(); inputScanner.nextLine(); // 再次读取换行符,为下一轮输入做准备 // 创建实例并添加到列表 ProductMaster newProduct = new ProductMaster(prodName, prodPrice, discQty, discPrice); productList.add(newProduct); } inputScanner.close(); // 关闭Scanner释放资源 // 可选:验证列表中的内容 System.out.println("\n===== 已创建的产品列表 ====="); for (ProductMaster product : productList) { System.out.printf("名称:%s | 原价:%.2f | 折扣数量:%d | 折扣价:%.2f\n", product.productName, product.productPrice, product.discountQuantity, product.discountPrice); } } }
关键细节说明
- Scanner的换行符处理:每次用
nextInt()或nextDouble()读取数值后,控制台会残留一个换行符,必须用nextLine()读取掉,否则下一次读取字符串会直接拿到空内容。 - 循环灵活性:示例中用固定数量控制循环,你也可以改成无限循环,比如当用户输入
exit作为产品名称时退出,代码如下:
// 替换原循环的替代方案:按需添加产品,输入exit结束 System.out.println("请输入产品信息,输入'exit'作为产品名称结束输入:"); while (true) { System.out.print("产品名称:"); String prodName = inputScanner.nextLine(); if ("exit".equalsIgnoreCase(prodName)) { break; } // 后续的价格、折扣信息读取逻辑和之前一致 // ... }
- 实例创建与存储:每次循环收集完所有参数后,调用带参构造器创建
ProductMaster实例,再通过List.add()方法将实例存入列表。
内容的提问来源于stack exchange,提问作者Ron Hilkin
相关产品推荐
相关产品推荐

