【发布时间】:2021-04-02 13:09:03
【问题描述】:
我无法在嵌套在for 循环中的IF/ELSE 语句中发现我的错误在哪里。我确实尝试使用while 循环来使我的IF/ELSE 语句工作,但它没有按预期工作。
即使是我的Console.Writeline 声明也无法捕捉到正确的价格和尺寸。
我的代码:
static void Main(string[] args)
{
string[] size = { "S", "M", "L", "X"};
decimal[] price = { 6.99M, 8.99M, 12.50M, 15.00M};
Console.WriteLine("Please enter a pizza size : ");
string pizzaSize = Console.ReadLine();
int i;
for (i = 0; i < size.Length; i++)
{
if (size[i] == pizzaSize)
{
Console.WriteLine("Your pizza size is " + pizzaSize + ". The price is " + price[i].ToString("C"));
} else
{
Console.WriteLine("Please enter a valid pizza size");
return;
}
}
Console.ReadKey();
}
【问题讨论】:
-
您是否在调试器中运行了您的代码?发生了什么,你观察到了什么?请注意,您可以使用 Visual Studio 中的即时窗口来检查例如在 if 语句中设置断点时 size[i] 的值。
-
如果您输入例如
M作为选定的披萨大小,第一个检查将是if ("S" == "M"),这显然是false。因此,您将在第一次迭代中点击else分支,这会导致函数立即进入return。在Main中,程序终止。进一步考虑,不鼓励将字符串与==进行比较,并且比较也区分大小写,因此"M" == "m"将返回false -
@ADyson 是的,很抱歉。如果用户输入与大小不同,则会执行错误语句
-
else子句中的return;对我来说看起来很奇怪。 -
很久以前我就被教导一个函数应该只有一个退出点。它有助于结构化代码,并且在尝试调试时可以省去很多麻烦。
标签: c# for-loop if-statement