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();
    }


以上是for循环中的嵌套if/else语句未按预期工作的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>