-2

C# 新手(到目前为止只编码一周)试图创建一个练习程序。似乎无法获得我想要存储在“price1”和“price2”中的数据。错误是 CS0165 使用未分配的局部变量“price1”和“price2”。

我试过移动代码行并添加一个返回命令,但我似乎不太明白。

        Console.Write("What grocery are you buying: ");
        string product1 = Console.ReadLine();
        Console.Write("How many are you buying: ");
        int quantity1 = Convert.ToInt32(Console.ReadLine());

        double price1;
        if (product1 == "Steak")
        {
            price1 = Convert.ToDouble(steak.price * quantity1);
        }
        if (product1 == "Cheerios")
        {
            price1 = Convert.ToDouble(cheerios.price * quantity1);
        }
        if (product1 == "Pepsi")
        {
            price1 = Convert.ToDouble(pepsi.price * quantity1);
        }
        if (product1 == "Celeste Pizza")
        {
            price1 = Convert.ToDouble(celeste.price * quantity1);
        }



        Console.Write("What second grocery are you buying: ");
        string product2 = Console.ReadLine();
        Console.Write("How many are you buying: ");
        int quantity2 = Convert.ToInt32(Console.ReadLine());

        double price2;
        if (product2 == "Steak")
        {
            price2 = Convert.ToDouble(steak.price * quantity2);
        }
        if (product1 == "Cheerios")
        {
            price2 = Convert.ToDouble(cheerios.price * quantity2);
        }
        if (product1 == "Pepsi")
        {
            price2 = Convert.ToDouble(pepsi.price * quantity2);
        }
        if (product1 == "Celeste Pizza")
        {
            price2 = Convert.ToDouble(celeste.price * quantity2);
        }

        Console.WriteLine(price1 + price2);

试图获取存储在“price1”和“price2”中的数据,以便我可以在最后将它们加在一起。对不起,如果我在这里弄错了任何术语。

4

2 回答 2

0

问题是,如果product1不等于if语句中的任何值,那么这些部分都不会运行,因此理论上存在price1可能永远不会被赋予值的危险。它不能使用没有价值的东西将其添加到其他东西中。这就是编译器所抱怨的。您需要price1在首次声明时提供默认值,作为备用选项,以防用户输入的内容不是四个预期的产品名称之一。

double price1 = 0;

对于这种情况可能没问题,但是您可以选择您认为最好的任何值,只要有某种值即可。

您也会遇到完全相同的问题price2

于 2019-05-20T22:19:09.543 回答
0

需要将“局部变量”price1 和 price2 初始化为您选择的默认值,可能为 0。

本质上,当您决定获取它们的总和并显示它时,不能保证将 price1 或 price 2 设置为任何值。

于 2019-05-20T22:20:09.297 回答