输入一个数字或Q以退出

大家好,我已经设置了一个任务的问题

该任务的第一部分是输出具有以下规则的价格表:

最高50的价格是每个5英镑。 在51到80之间,价格为每个4英镑,而在81到100之间,价格是每个2.50英镑。 使用循环结构和选择语句(如果…等),您的程序应输出小部件的小部件价格图表,其中包含10到100的倍数。

我已经完成了这个,但是在输出表输入一些小部件之后,任务的第二部分让我感到难过。 然后,您应该计算成本并输出该值。 如果用户输入“q”或“Q”,程序应该终止。

这是完整的代码

using System; namespace w5Task3 { class Program { public static void Main ( string[] args ) { double PriceEach1 = 5; double PriceEach2 = 4; double PriceEach3 = 2.50; double Quantity = 10; int UserOrder=0; Console.WriteLine("\n\nBelow is the price chart:\n\n"); Console.WriteLine("WidgetQuantity\t\t\tPrice\n"); while (Quantity <=100) { double Price1 = PriceEach1*Quantity; double Price2 = PriceEach2*Quantity; double Price3 = PriceEach3*Quantity; if (Quantity =51 && Quantity 80 && Quantity =0) { try { Console.WriteLine("Enter the amount of widgets you would like to purchase or press q to quit"); string temp = Console.ReadLine(); if (temp =="q") break; if (temp =="Q") break; int.TryParse(temp, out UserOrder); double UserPrice; if (UserOrder =51 && UserOrder 80) { UserPrice = UserOrder*2.5; Console.WriteLine("The price is {0:C}",UserPrice"); } } catch(Exception) { Console.WriteLine("You have entered an incorrect value. Please enter a number or press q to quit"); } } } } 

我遇到问题的部分是:

  while (UserOrder >=0) { try { Console.WriteLine("Enter the amount of widgets you would like to purchase or press q to quit"); string temp = Console.ReadLine(); if (temp =="q") break; if (temp =="Q") break; int.TryParse(temp, out UserOrder); double UserPrice; if (UserOrder =51 && UserOrder 80) { UserPrice = UserOrder*2.5; Console.WriteLine("The price is {0:C}",UserPrice"); } } catch(Exception) { Console.WriteLine("You have entered an incorrect value. Please enter a number or press q to quit"); } } } 

我可以让程序退出或执行一个UserPrice,但是当我需要根据订购金额更改价格时。

任何帮助或建议都非常感谢!

第67行和第73行的常量表达式中有换行符!

解决这些问题,一切运行良好。

我认为你的问题是第64行和第70行的UserPrice之后的引用。

 Console.WriteLine("The price is {0:C}",UserPrice"); 

去掉它

最简单的方法是在计算订单部分的价格后调整UserOrder 。 你可以向任何一个方向前进,但它基本上看起来像:

 if (HasThisQuantityRange) { Total += ThisAmount * (Lower of: ThisQuantity or UserOrder); UserOrder -= (Lower of: ThisQuantity or UserOrder); } if (UserOrder > 0 && HasAdjustedQuantityRange) { Total += ThisAmount * (Lower of: ThisQuantity or UserOrder); UserOrder -= (Lower of: ThisQuantity or UserOrder); } 

等等。

显然,这都是伪代码,你需要自己实现它,但这有望让你指向正确的方向。

我无法理解你遇到的问题到底是什么。 您是否正在努力为订单获得正确的计算,或者Quit行为是否按照您期望的方式行事。

一般来说,我认为使用像你的while循环条件那样的瞬态变量是不好的forms。 当我想要一个控制台应用程序重复我通常设置一个专门用于循环条件的变量,如下所示:

 bool isRunning = true; while (isRunning) { .... 

然后当您检查输入时

 if (temp.ToUpper() == "Q") { isRunning = false; break; }