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

C#控制台应用中实现用户订单输入收集、商品展示及价格计算的问题

C#控制台应用中实现用户订单输入收集、商品展示及价格计算的问题

嘿,我看了你的代码,马上就发现问题所在啦!你现在的List<string> list是放在Start标签之后的,每次用户输入完跳转回Start时,都会重新创建一个全新的列表——之前添加的商品当然就没啦!这就是为什么list.Add看起来没生效的原因。

另外,我们还可以优化一下输入验证(避免用户输入非数字导致程序崩溃),同时把价格计算的逻辑也加上。下面是修改后的完整代码,我给你标了关键改动点:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        string[] computer = { "Cpu", "Gpu", "Ram", "Hard", "Motherboard" };
        int[] price = { 30000, 70000, 20000, 25000, 40000 };

        // 把列表移到循环外面!这样每次添加的内容都会保留
        List<string> orderedItems = new List<string>();
        List<int> orderedPrices = new List<int>();

        Console.WriteLine("0 = Cpu, 1 = Gpu, 2 = Ram, 3 = Hard, 4 = Motherboard\n每次输入对应数字下单,输入5完成下单并计算总价");

    Start:
        Console.Write("请输入你要订购的商品编号:");
        // 用TryParse做输入验证,避免非数字输入崩溃
        if (!int.TryParse(Console.ReadLine(), out int num))
        {
            Console.WriteLine("输入无效,请输入数字!");
            goto Start;
        }

        if (num >= 0 && num < 5)
        {
            // 同时添加商品名称和对应的价格到列表
            orderedItems.Add(computer[num]);
            orderedPrices.Add(price[num]);
            Console.WriteLine($"已添加:{computer[num]}");
            goto Start;
        }
        else if (num == 5)
        {
            Console.WriteLine("\n===== 你的订单详情 =====");
            // 遍历展示所有订购的商品
            foreach (var item in orderedItems)
            {
                Console.WriteLine(item);
            }
            // 计算总价
            int totalPrice = 0;
            foreach (var p in orderedPrices)
            {
                totalPrice += p;
            }
            Console.WriteLine($"订单总价:{totalPrice}");
            Console.WriteLine("下单流程完成!");
        }
        else
        {
            Console.WriteLine("无效编号,请输入0-5之间的数字!");
            goto Start;
        }
    }
}

关键改动说明:

  • 列表位置调整:把orderedItems和orderedPrices移到Start标签之前,确保每次循环都使用同一个列表,不会丢失之前的订单内容。
  • 输入验证优化:使用int.TryParse代替Convert.ToInt32,当用户输入非数字时,程序不会直接崩溃,而是提示重新输入。
  • 价格收集逻辑:新增了orderedPrices列表来存储每个订单商品的价格,最后遍历计算总价。
  • 用户反馈优化:添加了已添加商品的提示,还有订单详情的格式化输出,让用户体验更好。

你可以直接运行这段代码测试,现在输入多个商品编号后,输入5就能看到完整的订单列表和总价啦!

备注:内容来源于stack exchange,提问作者Parsa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 07:09:53