我正在为我的介绍级别C#课程处理以下两个问题。我已经完成了问题3,但遇到问题4的问题。问题是总数不正确,因为它没有添加输入的第一个组合值,我不太确定我哪里出错了。我很感激你们可以提供的任何帮助。请记住这是一个介绍级别的课程,所以它需要简单的循环,如果然后语句,做while语句等。这是我到目前为止的代码:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter number of customers: ");
var numCust = Convert.ToInt32(Console.ReadLine());
int lunchCombo = 0;
decimal total = 0;
Console.WriteLine("Enter lunch combo purchased");
lunchCombo = Convert.ToInt32(Console.ReadLine());
for ( int i = 1; i < numCust; i++ )
switch (lunchCombo)
{
case 1:
Console.WriteLine("Enter lunch combo purchased");
lunchCombo = Convert.ToInt32(Console.ReadLine());
total = total + 4.25M;
break;
case 2:
Console.WriteLine("Enter lunch combo purchased");
lunchCombo = Convert.ToInt32(Console.ReadLine());
total = total + 5.75M;
break;
case 3:
Console.WriteLine("Enter lunch combo purchased");
lunchCombo = Convert.ToInt32(Console.ReadLine());
total = total + 5.25M;
break;
case 4:
Console.WriteLine("Enter lunch combo purchased");
lunchCombo = Convert.ToInt32(Console.ReadLine());
total = total + 3.75M;
break;
default:
Console.WriteLine("Invalid input");
break;
}
Console.WriteLine("Your total is {0}", total);
Console.ReadKey();
}
}
一家餐厅有4个午餐组合供顾客选择:
组合1:烤鸡肉炸鸡[价格:4.25] 组合2:土豆泥烤牛肉[价格:5.75] 组合3:鱼和薯条[价格:5.25] 组合4:汤和沙拉[价格:3.75]
写一个程序,询问客户订购哪种午餐组合。使用switch语句确定并显示客户需要支付的金额。如果客户订购了菜单上没有的内容,则显示“无效输入”。不要使用任何if ... else语句。
展开计划3以计算一组客户应付的总金额。该程序首先询问该组中的客户数量。然后它使用循环逐个接受订单。如果客户订购的菜单不在菜单上,请忽略该订单并转到下一位客户。使用组中的客户数来确定循环执行的次数。不要让用户输入特殊值(如-1)来停止循环。计算并显示该组需要支付的总金额。
答案 0 :(得分:0)
您需要询问客户他们想要外部 switch语句的组合。我只是使用伪代码,所以我不会直接为你做功课:
var total = 0;
var numCust = "How Many Customers?"
for (int i = 0; i < numCust; i++){
var combo = "What Combo do you want?"
switch (combo){
case 1:
total += 4.25;
break;
case 2:
total += 5.25;
break;
case 4:
total += 5.75;
break;
}
}
write("The total is: " + total);
答案 1 :(得分:0)
您需要在代码开头读取的客户数量的另一个循环中添加现有的排序逻辑。这是逻辑,但你应该编写代码。如果有人在这里为你编写代码,我认为它不会帮助你学习任何东西。
loop (numCust) {
read order number;
loop (lunchCombo) {
add to total;
}
}
答案 2 :(得分:0)
你需要在for循环的开头和switch语句之前有以下两行中的每一行的一个实例:
Console.WriteLine("Enter lunch combo purchased");
lunchCombo = Convert.ToInt32(Console.ReadLine());
然后你打开用户选择的午餐套餐。
另外,你的for循环应该从i = 0循环到i&lt; numCust或从i = 1到i&lt; = numCust。你以你的方式离开顾客。
答案 3 :(得分:0)
在i = 0而不是i = 1开始你的for循环会更容易。然后在for循环中,在switch语句之外询问用户对午餐组合的输入
for (int i = 0; i < numCust; i++)
{
Console.WriteLine("What is this customer's order?");
lunchCombo = Convert.ToInt32(Console.ReadLine());
switch (lunchCombo)
{
case 1:
total = total + 4.25M;
break;
case 2:
total = total + 5.75M;
break;
case 3:
total = total + 5.25M;
break;
case 4:
total = total + 3.75M;
break;
default:
Console.WriteLine("Invalid input");
break;
}
}
答案 4 :(得分:0)
考虑从1开始的效果以及您为i停止计数器的位置。
也就是说,你从1开始计数到n-1,这意味着如果你的循环时间比你想要的少一次。因此,如果numCustomers为4,则循环结果为:
i starts at | 0 | 1 | 2 | 3 | 4 |
---------------------------------
i loop... | 4 | 3 | 2 | 1 | 0 |
如果我从1开始,我没有经历足够的时间。你需要进行两次更改之一。将i更改为从0开始,或将比较更改为&lt; =。要么工作。
不用担心,这是一个常见错误!
(感谢Quantic的评论答案!)