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

C#披萨订单系统:如何在发票区正确展示各披萨的crust与topping信息

问题原因

你当前使用单个字符串变量pizzaSelection存储披萨信息,每次循环都会用新披萨的内容覆盖它,所以最终发票区域只能显示最后一款披萨的信息。

解决方案

改用集合(比如List<string>)来存储每一款披萨的描述,这样就能保留所有披萨的信息,后续发票循环时逐一取出展示:

  • 在订单输入循环前,初始化一个字符串列表用于存储所有披萨信息
  • 每完成一款披萨的选择,就将其描述添加到列表中
  • 发票区域遍历这个列表,输出每一款披萨的信息
修改后的完整代码
// Ask user for pizza order details
//crust selection
qtyPizzas = numPizzas();
// 新增:初始化列表存储所有披萨信息
List<string> pizzaSelections = new List<string>();

for (loop = 1; loop <= qtyPizzas; loop++)
{
    crustOption = selectCrust();
    crustPrice = crustCost(crustOption);
    if (crustOption == 1)
    {
        crustString = "thin crust";
    }
    else
    {
        crustString = "deep pan";
    }
    //topping selection
    toppingOption = selectTopping();
    toppingPrice = toppingCost(toppingOption);
    if (toppingOption == 1)
    {
        toppingString = "ham";
    }
    else if (toppingOption == 2)
    {
        toppingString = "mushrooms";
    }
    else if (toppingOption == 3)
    {
        toppingString = "mediterranean vegetables";
    }
    else if (toppingOption == 4)
    {
        toppingString = "extra cheese";
    }
    unitPrice = crustPrice + toppingPrice;
    totalPizzaCost = totalPizzaCost + unitPrice;
    Console.WriteLine("- Pizza #" + loop + ": " + crustString + " with " + toppingString + " (£" + unitPrice + ")");
    // 修改:将当前披萨信息添加到列表,而非覆盖单个变量
    pizzaSelections.Add($"{crustString} {toppingString}");
}

Console.Write("pizza delivery? (y/n): ");
deliveryOption = Console.ReadLine();

// Calculate delivery cost based on distance
if (deliveryOption == "y")
{
    Console.Write("Enter delivery distance in miles: ");
    deliveryDistance = Convert.ToDouble(Console.ReadLine());

    if (deliveryDistance <= 2)
    {
        deliveryCost += 0;
    }
    else if (deliveryDistance <= 5)
    {
        deliveryCost += 3.00;
    }
    else if (deliveryDistance <= 8)
    {
        deliveryCost += 5.00;
    }
    else
    {
        Console.WriteLine("Sorry, we do not deliver that far.");
    }
}


// calculate total cost
vat = (totalPizzaCost + deliveryCost) * (100 + 20) / 100;
orderVAT = vat - totalPizzaCost - deliveryCost;

// Output the invoice
Console.WriteLine("");
Console.WriteLine("INVOICE");
Console.WriteLine("------------------------------");
Console.WriteLine("Customer ID: " + customerID);
Console.WriteLine("");
Console.WriteLine("Pizzas:");

// 修改:遍历列表输出每一款披萨信息
for (int i = 0; i < pizzaSelections.Count; i++)
{
    Console.WriteLine($"pizza # {i+1}: {pizzaSelections[i]}");
}
Console.WriteLine("  Total pizza costs: " + totalPizzaCost.ToString("C"));
Console.WriteLine("  Delivery cost: " + deliveryCost.ToString("C"));
Console.WriteLine("  VAT: " + orderVAT.ToString("C"));
Console.WriteLine("  Grand total (incl. VAT): " + vat.ToString("C"));
Console.WriteLine("------------------------------");
Console.ReadKey();
额外优化建议
  • 可以自定义一个Pizza类,把饼底、配料、单价等属性封装进去,代码会更清晰易维护
  • 字符串拼接优先使用C#的字符串插值($"")替代传统的+拼接,可读性更好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:19:52