gpt4 book ai didi

c# - "Use of unassigned local variable"是什么意思?

转载 作者:IT王子 更新时间:2023-10-29 04:13:22 27 4
gpt4 key购买 nike

我不断收到有关 annualRate、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 block 会被执行。因此,无论如何都不会分配像 annualRate 这样的变量。以下是让编译器理解的方法:

if (creditPlan == "0")
{
// ...
}
else if (creditPlan == "1")
{
// ...
}
else if (creditPlan == "2")
{
// ...
}
else
{
// ...
}

编译器知道使用 if/else block ,其中一个 block 肯定会被执行,因此如果您在所有 block 中分配变量,它不会给编译器错误。

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

关于c# - "Use of unassigned local variable"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5710485/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com