2016-09-17 105 views
0

我想在C#中做一個基本的程序來計算netPay和grossPay,但是我遇到了一個小問題。在將交換機添加到我的程序後,我添加了一個開關,將我的taxRate設置爲基於提供的字母的常量,它表示taxRate是未分配的本地變量。我對C#仍然很陌生,所以我可能犯了一個非常簡單的錯誤,但是對於我來說,我無法找到它。先謝謝您的幫助。C#使用未分配的本地變量

 const int married = 15, single = 22, divorced = 23, widowed = 13; 
     double payRate, hoursWorked, grossPay, netPay; 
     double taxRate; 
     char marStatus; 



     Console.WriteLine("Please Enter Hourly Wages"); 
     payRate = int.Parse(Console.ReadLine()); 

     Console.WriteLine("Please Enter Hours Worked"); 
     hoursWorked = int.Parse(Console.ReadLine()); 

     Console.WriteLine("Please Enter Marital Status Letter: (M) Married (S) Single (D) Divorced (W) Widowed"); 
     marStatus =Convert.ToChar(Console.ReadLine()); 


     switch (marStatus) 
     { 
      case 'M': 
       taxRate = married; 
       break; 
      case 'S': 
       taxRate = single; 
       break; 
      case 'D': 
       taxRate = divorced; 
       break; 
      case 'W': 
       taxRate = widowed; 
       break; 
      default: 
       Console.WriteLine("Invalid Input, Please Try Again."); 
       break; 
     } 

     if (hoursWorked > 40) 
     {grossPay =((hoursWorked-40)*(payRate*1.5))+(40*payRate);} 
     else 
     { grossPay = payRate * hoursWorked; } 

     netPay = grossPay * taxRate; // This is where I have the problem 

     Console.WriteLine("Gross Pay=" +grossPay); 
     Console.WriteLine("Net Pay=" +netPay); 
     Console.WriteLine("xxx"); 

     Console.ReadLine(); 

回答

1
中的switch-case

,如果defual情況下得到滿足(沒有其他情況下匹配 「marStatus」),然後TAXRATE沒有得到一個值asigned。之後你嘗試使用這個變量,沒有任何價值。這是你得到的編譯錯誤。爲變量賦值。