C#在三个变量上使用未分配的局部变量

时间:2018-05-14 11:47:32

标签: c#

我正在尝试创建一个代码,允许我计算两个产品的价格,但整个代码中有一些变化,(我想根据将要购买的数量进行折扣。但是当我计算时三个变量显示使用未分配的局部变量...

static void Main(string[] args)
{
    double peso_morango, peso_maca, total;
    double totalmorango, totalmaca, final_real;
    const double percentual = 0.1;

    Console.WriteLine("Insira a quantidade de morangos, em kg: ");
    peso_morango = Convert.ToInt32(Console.ReadLine());

    Console.WriteLine("Insira a quantidade de maça, em kg:");
    peso_maca = Convert.ToInt32(Console.ReadLine());

    if (peso_morango <= 5)
    {
        totalmorango = 2.50 * peso_morango;


    }
    else if (peso_morango > 5)
    {
        totalmorango = 2.20 * peso_morango;
    }
    else if (peso_morango > 8)
    {
        totalmorango = 1.62 * peso_morango;
    }
    else if (peso_maca <= 5)
    {
        totalmaca = 1.62 * peso_maca;
    }

    else if (peso_maca > 5)
    {
        totalmaca = 2.20 * peso_maca;
    }
    else if (peso_maca > 8)
    {
        totalmaca = 1.35 * peso_maca;
    }
    else if (peso_maca + peso_morango > 8)
    {
        total = totalmorango + totalmaca;

        final_real = (total) - (percentual * total);

        Console.WriteLine(" O valor final é de {0} euros", final_real);
    }
    else if (totalmaca + totalmorango > 25)
    {

        total = totalmorango + totalmaca;

        final_real = (total) - (percentual * total);

        Console.WriteLine(" O valor final é de {0} euros", final_real);
    }
    else if (peso_maca + peso_morango < 8)
    {
        Console.WriteLine(" O valor final é de {0} euros", final_real);
    }

    else if (totalmorango + totalmaca < 25)
    {
        Console.WriteLine(" O valor final é de {0} euros", final_real);
    }

    Console.ReadKey();
}

3 个答案:

答案 0 :(得分:0)

totalmacaif未初始化,只是声明了它们。在使用之前,您需要先使用正确的初始值初始化变量。

通过查看代码,您可以在其他操作中使用它们。

假设任何elseif double totalmorango, totalmaca, final_real;不满足(给它们赋值),你需要它们为0.(也是加法运算的单位值)

替换你的行

double totalmorango = 0, totalmaca = 0, final_real = 0;

else if (peso_morango > 5)

<强>更新

然而,无论您遇到什么错误都将通过上述步骤解决,但正如其他人所提到的那样。你的检查,

peso_morango

如果您想检查else if (peso_morango > 5 && peso_morango <= 8)的值是否大于5,但是如果您希望它小于或等于8,则

不合适。 你应该检查peso_maca

此外,您应该对 if (peso_maca <= 5) { totalmaca = 1.62 * peso_maca; } else if (peso_maca > 5 && peso_maca <= 8) { totalmaca = 2.20 * peso_maca; } else// no need to check else part "peso_maca > 8" as it always be true { totalmaca = 1.35 * peso_maca; } 进行单独的条件检查。等,

double totalmorango = 0, totalmaca = 0, final_real = 0;

以同样的方式,也为后面的部分分别进行条件检查。

通过这样做,您甚至不需要这样做,

List_1

如答案的第一部分所示。

答案 1 :(得分:0)

我知道这不是解决您问题的方法,但代码的唯一部分将是:

    static void Main(string[] args)
    {
        double peso_morango, peso_maca, total;
        double totalmorango, totalmaca, final_real;
        const double percentual = 0.1;

        Console.WriteLine("Insira a quantidade de morangos, em kg: ");
        peso_morango = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("Insira a quantidade de maça, em kg:");
        peso_maca = Convert.ToInt32(Console.ReadLine());

        if (peso_morango <= 5)
        {
            totalmorango = 2.50 * peso_morango;
        }
        else if (peso_morango > 5)
        {
            totalmorango = 2.20 * peso_morango;
        }
  Console.ReadKey();
}

这是因为因为peso_morango&lt; = 5 OR peso_morango&gt; 5将是真的。 我不会思考&#34;否则,如果&#34;做你期望它做的事。

答案 2 :(得分:0)

犯这样的错误意味着你是编程的初学者,你可能会对正在发生的事情做一些解释。

我们将在此示例中使用 int

当你声明像int x;这样的变量时,基本上说我需要一些内存为我分配一些内存,有多少内存取决于int

现在,如果您曾经使用过某些C ++或任何非托管编程语言(意味着编译器没有为您完成一半的工作),您就会理解

内存中的

int x;实际上会保留我们以前不了解的操作中的某些值,因此您必须从垃圾中明确清除它。

在C#中基本相同,但是在这里我们有编译器抱怨帮助你,因为你想要一些内存它需要新鲜,所以你必须将它归零int x = 0; < / p>

因此,您必须将其归零或为其指定一个值,如果您想保持零值,也可以使用负值,具体取决于值类型int or uint etc...。< / p>