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

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

我的年率、月费和迟交都会出现这个错误。

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;
            }

        }
    }}


九州编程
浏览 705回答 3
3回答

达令说

编译器不够聪明,不知道至少有一个if块将被执行。因此,它看不到这样的变量annualRate无论如何都会被分配。下面是如何让编译器理解的方法:if (creditPlan == "0"){    // ...}else if (creditPlan == "1"){    // ...}else if (creditPlan == "2"){    // ...}else{    // ...}编译器知道,如果使用if/etc块,将保证执行其中一个块,因此,如果要在所有块中分配变量,则不会给编译器带来错误。顺便说一句,您也可以使用switch语句而不是if也许是为了让你的代码更简洁。

汪汪一只猫

将声明更改为:double lateFee = 0.0;double monthlyCharge = 0.0;double annualRate = 0.0;导致此错误的原因是,在代码中至少有一条路径,其中这些变量最终不会被设置为任何内容。

子衿沉夜

因为如果if语句中没有一个计算为true,则局部变量将被取消赋值。在其中抛出一个OSE语句,并为这些变量分配一些值,以防if语句的计算结果不为true。如果这不能使错误消失的话,请在这里发帖。另一个选项是在代码开始时声明变量时,将变量初始化为某些默认值。
打开App,查看更多内容
随时随地看视频慕课网APP