我正在尝试创建一个代码,允许我计算两个产品的价格,但整个代码中有一些变化,(我想根据将要购买的数量进行折扣。但是当我计算时三个变量显示使用未分配的局部变量...
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();
}
答案 0 :(得分:0)
totalmaca
和if
未初始化,只是声明了它们。在使用之前,您需要先使用正确的初始值初始化变量。
通过查看代码,您可以在其他操作中使用它们。
假设任何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>