You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需文本文件保存多组Console.ReadLine()输入,实现批量展示所有产品

问题解决:批量输入产品后统一展示所有条目

当前代码存在的问题:每次输入产品后按n仅能打印最新条目,无法累计展示所有已输入的产品。需求为:

  • 按y可继续添加产品
  • 按n时在控制台顶部展示所有已输入的产品
  • 无需依赖文本文件,产品存入已有的List集合中

核心修改思路

原代码每次调用FirstCategory()都会新建Products实例,导致每次的产品List都是独立的,无法累计数据。需要复用同一个Products实例来存储所有输入的产品,同时补充批量展示的方法。

修改后的完整代码示例

1. 包含FirstCategory方法的类(复用全局产品集合)

public class ProductManager
{
    // 全局维护一个Products实例,所有分类的产品都存入这里
    private Products _allProducts = new Products();

    public void FirstCategory()
    {
        string info;
        string location;
        int amount; 

        Console.Clear();
        Console.WriteLine("Temp Products - First Category");
        Console.WriteLine("Enter product info, location, and amount to add.");

        // 读取产品信息(修正原代码变量名不匹配问题)
        Console.WriteLine("Please enter the product info: ");
        info = Console.ReadLine();

        Console.WriteLine("Please enter the product location: ");
        location = Console.ReadLine();

        Console.WriteLine("Please enter the available amount: ");
        // 增加输入合法性校验,避免非数字输入崩溃
        while (!int.TryParse(Console.ReadLine(), out amount))
        {
            Console.WriteLine("Invalid input, please enter a valid number: ");
        }

        // 复用全局Products实例,存入当前产品
        _allProducts.Insert(info, location, amount);

        // 临时展示当前添加的产品
        Console.WriteLine("\nAdded product:");
        Console.WriteLine($"Info: {info}, Location: {location}, Amount: {amount}");

        // 询问是否继续添加
        Console.WriteLine("\nDo you wish to enter another product? (y/n)");
        string answer = Console.ReadLine().Trim().ToLower();
        if (answer == "y")
        {
            FirstCategory();
        }
        else if (answer == "n")
        {
            // 清空控制台,在顶部展示所有已输入产品
            Console.Clear();
            Console.WriteLine("All Entered Products");
            Console.WriteLine("---------------------");
            _allProducts.DisplayAll();
        }
    }
}

2. 完善Products类(补充批量展示方法)

public class Products
{
    // 已有产品集合(假设你原代码中已有类似定义)
    private List<ProductItem> _productList = new List<ProductItem>();

    // 已有插入方法
    public void Insert(string info, string location, int amount)
    {
        _productList.Add(new ProductItem 
        { 
            Info = info, 
            Location = location, 
            Amount = amount 
        });
    }

    // 新增:展示所有产品的方法
    public void DisplayAll()
    {
        if (_productList.Count == 0)
        {
            Console.WriteLine("No products entered yet.");
            return;
        }

        foreach (var item in _productList)
        {
            Console.WriteLine($"Product Info: {item.Info}, Location: {item.Location}, Amount: {item.Amount}");
        }
    }

    // 产品实体类(原代码中应有类似定义)
    private class ProductItem
    {
        public string Info { get; set; }
        public string Location { get; set; }
        public int Amount { get; set; }
    }
}

关键修改点说明

  • 复用产品集合:将Products实例提升为类成员变量,确保所有输入的产品都存入同一个List,避免每次调用方法时数据被重置。
  • 修正变量名错误:原代码中读取输入的变量名与插入方法的参数名不匹配(如用name接收info参数),统一后避免未赋值错误。
  • 输入合法性校验:用int.TryParse替代Convert.ToInt32,处理用户输入非数字的情况,提升程序稳定性。
  • 批量展示逻辑:在Products类中添加DisplayAll方法,遍历内部List输出所有产品信息,在用户按n时执行展示。

内容的提问来源于stack exchange,提问作者Wurdular

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:12:28