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

如何在C#二维数组中获取多组输入以存储并输出用户信息

如何在C#中存储并输出多组商品信息

嘿,我来帮你搞定这个问题!你的代码现在没法完整保存每组信息的核心原因是:你用的二维字符串数组string[,] items每个元素只能存单个字符串,但每组商品有名称、价格、数量三个字段,原代码里每次循环只把最后一个输入(数量)存进去,前两个输入直接丢了,输出的时候还重复用同一个元素,自然不对。

下面给你两种解决方案,推荐用第一种,更符合C#的面向对象思想~

方案一:用自定义类封装信息(推荐)

我们可以先定义一个Product类,把商品的三个属性打包在一起,这样每组信息就是一个对象,存储和读取都清晰很多。

完整代码示例

// 定义商品类,封装名称、价格、数量三个属性
public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; } // 价格用decimal比float/double更靠谱,避免浮点误差
    public int Quantity { get; set; }
}

static void Main(string[] args)
{
    // 这里用数组存2个商品,也可以用List<Product>实现动态添加
    Product[] products = new Product[2];

    // 循环输入每组商品信息
    for (int i = 0; i < products.Length; i++)
    {
        Console.WriteLine($"请输入第{i+1}个商品的信息:");
        
        Console.Write("商品名称:");
        string name = Console.ReadLine();
        
        Console.Write("商品价格:");
        // 实际项目里建议加输入验证,确保用户输入的是有效数字
        decimal price = decimal.Parse(Console.ReadLine());
        
        Console.Write("商品数量:");
        int quantity = int.Parse(Console.ReadLine());
        
        // 创建Product对象并存入数组
        products[i] = new Product
        {
            Name = name,
            Price = price,
            Quantity = quantity
        };
    }

    // 输出所有存储的商品信息
    Console.WriteLine("\n=== 已存储的商品信息 ===");
    foreach (var product in products)
    {
        Console.WriteLine($"商品名称:{product.Name}");
        Console.WriteLine($"商品价格:{product.Price:C}"); // :C 是格式化货币的写法,会自动加货币符号
        Console.WriteLine($"商品数量:{product.Quantity}");
        Console.WriteLine("------------------------");
    }
}

为什么推荐这种方式?

  • 逻辑清晰:每个商品的三个属性是绑定在一起的,不会搞混
  • 扩展性强:以后要加商品分类、库存预警等属性,直接在类里加就行
  • 可读性高:别人看代码一眼就能明白每个字段的含义

方案二:调整二维数组结构(不推荐,仅作参考)

如果暂时不想用类,也可以调整二维数组的维度,把每个字段作为一维,商品作为另一维。比如string[3, 2],第一维代表字段(0=名称,1=价格,2=数量),第二维代表商品序号。

代码示例

static void Main(string[] args)
{
    // 第一维:0=名称,1=价格,2=数量;第二维:商品序号
    string[,] items = new string[3, 2];

    for (int i = 0; i < 2; i++)
    {
        Console.WriteLine($"请输入第{i+1}个商品的信息:");
        
        Console.Write("商品名称:");
        items[0, i] = Console.ReadLine();
        
        Console.Write("商品价格:");
        items[1, i] = Console.ReadLine();
        
        Console.Write("商品数量:");
        items[2, i] = Console.ReadLine();
    }

    // 输出信息
    Console.WriteLine("\n=== 已存储的商品信息 ===");
    for (int i = 0; i < 2; i++)
    {
        Console.WriteLine($"商品名称:{items[0, i]}");
        Console.WriteLine($"商品价格:{items[1, i]}");
        Console.WriteLine($"商品数量:{items[2, i]}");
        Console.WriteLine("------------------------");
    }
}

注意点

这种方式虽然能工作,但可读性差,后续维护起来很麻烦,比如要加字段就得改数组维度,所以还是优先用类的方案。

原代码的问题总结

  1. 内层循环里你输出了三个输入提示,但只执行了一次Console.ReadLine(),所以前两个输入(名称、价格)直接被忽略了,只存了最后一个输入(数量)
  2. 输出的时候,不管是名称、价格还是数量,都用同一个items[i,j],所以内容重复且完全不对

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:17:18