首页 > 解决方案 > 有没有办法仅在使用时打印出一行文本?

问题描述

链接到完整代码

我正在创建一个小型咖啡馆应用程序。在我提示用户输入他们的详细信息、输入他们想要订购的商品代码和数量之后,我想在最终账单中只打印他们订购的东西。

tl; dr:我希望账单仅在他们订购了芝士蛋糕时打印出订购(例如)芝士蛋糕的详细信息,我不希望其他菜单项出现在账单上。

我已经手动打印了应用程序的标题。然后我将它运行到 if 条件以查看是否正在发生某个功能,如果发生则分别打印详细信息(例如:如果您订购了 3 个芝士蛋糕,它将在账单上打印其详细信息。)

Console.WriteLine("|    Item Code   |" + "|    Item Name    |" + "|    Item Cost    |" + "|     Qty Ordered     |");

double totBillCost = 0;
            if (makeOrder.orderCode == 1)
            {
                totBillCost = totBillCost + (cheesecake.itemCost * makeOrder.orderQty);
                Console.WriteLine("      "+ cheesecake.itemCode + "      " + cheesecake.itemName + "      " + cheesecake.itemCost + "      " + makeOrder.orderQty);
        }

我希望这是有道理的。我基本上希望它在订购时输出芝士蛋糕订单的详细信息。

如果重要的话,我在菜单中总共有 4 个项目。

标签: c#console-application

解决方案


尝试类似:

class Program
{
    static void Main(string[] args)
    {
        List<ISellable> boughtItems = new List<ISellable>
        {
            new BottleOfWater(),
            new Sugar(),
            new Chocolate(),
            new Sugar(),
            new BottleOfWater(),
            new BottleOfWater(),
            new BottleOfWater(),
            new BottleOfWater(),
            new BottleOfWater()
        };

        Console.WriteLine("| Name | Price | Amount |");

        List<IGrouping<Type, ISellable>> groupedBoughtItems = boughtItems.GroupBy(x => x.GetType()).ToList();

        foreach(IGrouping<Type, ISellable> group in groupedBoughtItems)
        {
            Console.WriteLine(string.Format("| {0} | {1} | {2} |", group.First().Name, group.First().Price, group.Count()));
        }

        Console.WriteLine(string.Format("| Total | {0} |", boughtItems.Sum(x => x.Price)));
    }
}

public interface ISellable
{
    string Name { get; set; }
    double Price { get; set; }
}

public class BottleOfWater : ISellable
{
    public string Name { get; set; }
    public double Price { get; set; }

    public BottleOfWater()
    {
        Name = "Bottle Of Water";
        Price = 2.55;
    }
}

public class Sugar : ISellable
{
    public string Name { get; set; }
    public double Price { get; set; }

    public Sugar()
    {
        Name = "Sugar";
        Price = 1.3;
    }
}

public class Chocolate : ISellable
{
    public string Name { get; set; }
    public double Price { get; set; }

    public Chocolate()
    {
        Name = "Chocolate";
        Price = 50;
    }
}

推荐阅读