“使用未分配的局部变量”是什么意思?

我对于yearRate,monthlyCharge和lateFee不断收到此错误。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Lab_5___Danny_Curro

{

class Program

{

static void Main(string[] args)

{

string firstName;

string lastName;

int accNumber;

string creditPlan;

double balance;

string status;

Boolean late = false;

double lateFee;

double monthlyCharge;

double annualRate;

double netBalance;

Console.Write("Enter First Name: ");

firstName = Console.ReadLine();

Console.Write("Enter Last Name: ");

lastName = Console.ReadLine();

Console.Write("Enter Account Number: ");

accNumber = Convert.ToInt32(Console.ReadLine());

Console.Write("Enter Credit Card Plan Number[Blank Will Enter Plan 0]: ");

creditPlan = Console.ReadLine();

Console.Write("Enter Balance: ");

balance = Convert.ToDouble(Console.ReadLine());

Console.Write("Is This Account Late?: ");

status = Console.ReadLine().Trim().ToLower();

if (creditPlan == "0")

{

annualRate = 0.35; //35%

lateFee = 0.0;

monthlyCharge = balance * (annualRate * (1 / 12));

return;

}

if (creditPlan == "1")

{

annualRate = 0.30; //30%

if (status == "y")

{

late = true;

}

else if (status == "n")

{

late = false;

}

if (late == true)

{

lateFee = 25.00;

}

monthlyCharge = balance * (annualRate * (1 / 12));

return;

}

if (creditPlan == "2")

{

annualRate = 0.20; //20%

if (status == "y")

{

late = true;

}

else if (status == "n")

{

late = false;

}

if (late == true)

{

lateFee = 35.00;

}

if (balance > 100)

{

monthlyCharge = balance * (annualRate * (1 / 12));

}

else

{

monthlyCharge = 0;

}

return;

}

if (creditPlan == "3")

{

annualRate = 0.15; //15%

lateFee = 0.00;

if (balance > 500)

{

monthlyCharge = (balance - 500) * (annualRate * (1 / 12));

}

else

{

monthlyCharge = 0;

}

return;

}

netBalance = balance - (lateFee + monthlyCharge);

Console.WriteLine("Name: \t\t\t {0} {1}", firstName, lastName);

Console.WriteLine("Account Number: \t{0}", accNumber);

Console.WriteLine("Credit Plane: \t\t{0}",creditPlan);

Console.WriteLine("Account Late: \t\t{0}", late);

Console.WriteLine("Balance: \t\t{0}", balance);

Console.WriteLine("Late Fee: \t\t{0}", lateFee);

Console.WriteLine("Interest Charge: \t{0}", monthlyCharge);

Console.WriteLine("Net Balance: \t\t{0}",netBalance);

Console.WriteLine("Annual Rate: \t\t{0}", annualRate);

Console.ReadKey();

}

}

}

回答:

编译器不够聪明,无法知道您的至少一个if块将被执行。因此,它不会看到像这样的变量annualRate无论如何都会被赋值。这是使编译器理解的方法:

if (creditPlan == "0")

{

// ...

}

else if (creditPlan == "1")

{

// ...

}

else if (creditPlan == "2")

{

// ...

}

else

{

// ...

}

编译器知道对于if / else块,可以保证其中一个块可以执行,因此,如果在所有块中分配变量,则不会产生编译器错误。

顺便说一句,您也可以使用switch语句代替ifs来使代码更整洁。

以上是 “使用未分配的局部变量”是什么意思? 的全部内容, 来源链接: utcz.com/qa/413625.html

回到顶部