c# - 有没有办法仅在使用时打印出一行文本?
问题描述
我正在创建一个小型咖啡馆应用程序。在我提示用户输入他们的详细信息、输入他们想要订购的商品代码和数量之后,我想在最终账单中只打印他们订购的东西。
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 个项目。
解决方案
尝试类似:
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;
}
}
推荐阅读
- unity3d - Unity - 脚本生成的网格具有不正确的照明
- c# - 在扩展环境中监控后台任务
- php - 用数字数据写所有月份的前三个字母
- tfs - CentOS 上的 VSTS-Agent 安装返回错误“System.Security.Cryptography.Native.OpenSsl”:(来自 HRESULT 的异常:0x8007007E)
- java - 函数参数和返回值看起来不正确 - Spring ResponseEntity
- php - 我有一个 64 位服务器,但 PHP 7.2(显然)以 32 位模式安装
- c++ - 在函数 LLVM 中创建局部变量
- html - xhtml2pdf在创建pdf时不应用css(html到pdf)
- html - 为什么我们在 html 的声明中使用 not 符号?当我们没有声明它时会发生什么?
- scala - 如何在scala中对字符串列表进行排序?