2014-09-24 26 views
0

我收到此錯誤「異常詳細信息:System.FormatException:輸入字符串的格式不正確。」看來我的轉換和解析不起作用。我使用ASP.NET C#。還有一種方法只是讀取數字值而不是使用文本框?異常詳細信息:System.FormatException:輸入字符串格式不正確。解析不起作用

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form id="Payroll" runat="server"> 
<div> 

    <h1>Exception Painting</h1> 
    <h2>Payroll Calculator</h2> 

    <p>Employee Name: <asp:TextBox ID="Name" runat="server"></asp:TextBox> 
    <p>Pay Rate: <asp:TextBox ID="PayRate" runat="server"></asp:TextBox> 
    <p>Salary Employee: <asp:TextBox ID="SalaryEmployee" runat="server"></asp:TextBox> 
    <p>Hours Worked: <asp:TextBox ID="HoursWorked" runat="server"></asp:TextBox> 

    <asp:Button ID="Submit" runat="server" Text="Submit" /> 

</div> 
</form> 

<% 
    double overtimeHours = 0; 
    double overtimePay = 0; 
    double regularPay = 0; 
    double totalPay = 0; 
    double regularHours = 0; 
    double basePay = 0; 
    double hrsWrked = 0; 
    double payRt = 0; 

    string nm = Name.Text; 

    hrsWrked = Convert.ToDouble(HoursWorked.Text); 
    //I cant figure out what im doing wrong here.. 
    hrsWrked = double.Parse(HoursWorked.Text); 

    string slry = Name.Text; 

    payRt = Convert.ToDouble(PayRate.Text); 
    payRt = double.Parse(PayRate.Text); 

    double overtimePayRt = payRt * 1.5; 

    if (Page.IsPostBack) 
    { 
     Payroll.Visible = false; 

     if (SalaryEmployee.Equals("no") && hrsWrked > 40) 
      overtimeHours = hrsWrked - 40; 
      regularHours = hrsWrked - overtimeHours; 
      overtimePay = overtimeHours * overtimePayRt; 
      regularPay = payRt * regularHours; 
      totalPay = overtimePay + regularPay; 
      basePay = hrsWrked * 52 * totalPay; 
      Response.Write("Employee Name: " + nm + "Base Salary: " + basePay + "Hours Worked: " + hrsWrked + "Total Weekly Pay: " + totalPay); 

     if (SalaryEmployee.Equals("yes")) 
      regularHours = 40; 
      totalPay = payRt * regularHours; 
      basePay = hrsWrked * 52 * totalPay; 
      Response.Write("Employee Name: " + nm + "Base Salary: " + basePay + "Hours Worked: "   + hrsWrked + "Total Weekly Pay: " + totalPay); 
    } 
    %> 

</body> 
</html> 
+0

只要我點擊調試,代碼就會運行!所以文本字段是空白的! – RadioSpace 2014-09-24 03:10:50

回答

1

你解析和轉換未初始化值

<p>Employee Name: <asp:TextBox ID="Name" runat="server"></asp:TextBox> 
<p>Pay Rate: <asp:TextBox ID="PayRate" runat="server">0.0</asp:TextBox> 
<p>Salary Employee: <asp:TextBox ID="SalaryEmployee" runat="server">0.0</asp:TextBox> 
<p>Hours Worked: <asp:TextBox ID="HoursWorked" runat="server">0.0</asp:TextBox> 

這將讓你的代碼編譯,但你需要儘快檢查每個用戶改變他們的事業會打破這些時間值你有值將不會解析或正確轉換

這裏是一個捕獲錯誤的方法的一個例子。

bool bueno = true;//spanish for good 




try 
{ 
    payRt = Convert.ToDouble(PayRate.Text); 
    payRt = double.Parse(PayRate.Text); 
    //I cant figure out what im doing wrong here.. 
    hrsWrked = double.Parse(HoursWorked.Text); 
} 
catch (System.FormatException fEX) 
{ 
    bueno = false; 
    Response.Write(fEX.Message);//you could do more here 
} 
catch (System.OverflowException ofEX) 
{ 
    bueno = false; 
    Response.Write(ofEX.Message);//you could do more here 
} 
catch (System.ArgumentException aEX) 
{ 
    bueno = false; 
    Response.Write(aEX.Message);//you could do more here 
} 

//I would do more about these errors but this is an example 


if(bueno) 
{ 
    double overtimePayRt = payRt * 1.5; 

    if (Page.IsPostBack) 
    { 
+0

我會如何初始化它們?對不起,我真的很喜歡這個笑話。也感謝您的回覆! – 2014-09-24 03:21:17

+0

@ user3505204在第一行代碼中發佈的通知我在'之前發佈了權利'我把'0.0'記住你不能使用0 cuase,在我看這個時沒有修復它。但隨着異常捕捉你不必初始化,但這意味着你是故意造成的錯誤 – RadioSpace 2014-09-24 03:29:59

+0

真棒,非常感謝你的啓動和運行!我不知道這是很容易初始化,我無處不在。 – 2014-09-24 03:46:55

相關問題