为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2019-07-12 15:27:36
“使用未分配的局部变量”是什么意思?我的年率、月费和迟交都会出现这个错误。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;             }         }     }}
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞


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


if (creditPlan == "0")

{

    // ...

}

else if (creditPlan == "1")

{

    // ...

}

else if (creditPlan == "2")

{

    // ...

}

else

{

    // ...

}

编译器知道,如果使用if/etc块,将保证执行其中一个块,因此,如果要在所有块中分配变量,则不会给编译器带来错误。


顺便说一句,您也可以使用switch语句而不是if也许是为了让你的代码更简洁。


查看完整回答
反对 回复 2019-07-12
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

将声明更改为:

double lateFee = 0.0;double monthlyCharge = 0.0;double annualRate = 0.0;

导致此错误的原因是,在代码中至少有一条路径,其中这些变量最终不会被设置为任何内容。


查看完整回答
反对 回复 2019-07-12
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

因为如果if语句中没有一个计算为true,则局部变量将被取消赋值。在其中抛出一个OSE语句,并为这些变量分配一些值,以防if语句的计算结果不为true。如果这不能使错误消失的话,请在这里发帖。

另一个选项是在代码开始时声明变量时,将变量初始化为某些默认值。


查看完整回答
反对 回复 2019-07-12
  • 3 回答
  • 0 关注
  • 704 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信