for循环中的嵌套if/else语句未按预期工作
c#
我无法在IF/ELSE嵌套在for循环中的语句中发现我的错误在哪里。我确实尝试使用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();
}
回答
如果值为pizzaSizeis "L",则在for循环中的第一次检查将是 if ("L" == "M")which isfalse然后else分支在第一次迭代中执行,这return;在else子句中会导致函数立即返回。所以如果要检查pizzaSize值是否有效,可以使用以下解决方案:
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();
bool isValid = false;
while(isValid == false){
for (int i = 0; i < size.Length; i++)
{
if (size[i] == pizzaSize)
{
Console.WriteLine("Your pizza size is " + pizzaSize + ". The price is " + price[i].ToString("C"));
isValid = true;
break;
}
}
if (isValid == false){
Console.WriteLine("Please enter a valid pizza size");
pizzaSize = Console.ReadLine();
}
}
Console.ReadKey();
}