亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

C#
慕慕森 2019-08-03 07:03:40
“使用未分配的局部變量”是什么意思?我的年率、月費和遲交都會出現這個錯誤。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貢獻1828條經驗 獲得超3個贊


編譯器不夠聰明,不知道至少有一個if塊將被執行。因此,它看不到這樣的變量annualRate無論如何都會被分配。下面是如何讓編譯器理解的方法:


if (creditPlan == "0")

{

    // ...

}

else if (creditPlan == "1")

{

    // ...

}

else if (creditPlan == "2")

{

    // ...

}

else

{

    // ...

}

編譯器知道,如果使用if/etc塊,將保證執行其中一個塊,因此,如果要在所有塊中分配變量,則不會給編譯器帶來錯誤。


順便說一句,您也可以使用switch語句而不是if也許是為了讓你的代碼更簡潔。




查看完整回答
反對 回復 2019-08-05
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

將聲明更改為:

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

導致此錯誤的原因是,在代碼中至少有一條路徑,其中這些變量最終不會被設置為任何內容。


查看完整回答
反對 回復 2019-08-05
?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

因為如果if語句中沒有一個計算為true,則局部變量將被取消賦值。在其中拋出一個OSE語句,并為這些變量分配一些值,以防if語句的計算結果不為true。如果這不能使錯誤消失的話,請在這里發帖。

另一個選項是在代碼開始時聲明變量時,將變量初始化為某些默認值。


查看完整回答
反對 回復 2019-08-05
  • 3 回答
  • 0 關注
  • 326 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號