2015-11-20 407 views
-5

如何減去C#中的負數?

如果我從一個正數中減去一個正數,代碼將起作用。

例如,4-1=3。 問題是當我減去一個負數,如3 - -2

這應該等於5

當我輸入 ' - ' 在文本框txt_p7(第二個文本框), 它示出了在這個代碼中的錯誤:

txt_result.Text = (Convert.ToInt32(txt_p1.Text) - Convert.ToInt32(txt_p7.Text)).ToString(); 

這裏是我正在使用的代碼:

private void txt_p1_TextChanged(object sender, EventArgs e) 
{ if ((!string.IsNullOrEmpty(txt_p1.Text)) && (!string.IsNullOrEmpty(txt_p7.Text))) 

txt_result.Text = (Convert.ToInt32(txt_p1.Text) - Convert.ToInt32(txt_p7.Text)).ToString(); 

    } 

private void txt_p7_TextChanged(object sender, EventArgs e) 
    { 
     if ((!string.IsNullOrEmpty(txt_p1.Text)) && (!string.IsNullOrEmpty(txt_p7.Text))) 


      txt_result.Text = (Convert.ToInt32(txt_p1.Text) - Convert.ToInt32(txt_p7.Text)).ToString(); 
    } 
+1

什麼是錯誤訊息? –

+2

糾正錯誤的第一步是*讀取錯誤消息*。 – David

+0

FormatException是未處理的.. 我第一次鍵入的值,no1 = -3,no2 = 4,結果顯示= -7 .. 那好吧,之後,我改變了值no1或no2,有錯誤.. –

回答

2

你的邏輯是txt_p7_TextChanged()

因此,當你試圖輸入一個「 - 」,你輸入任何數字之前,該方法被調用。

Convert.ToInt32(txt_p7.Text)將拋出一個錯誤txt_p7.Text = "-"在這個時間點是不是一個數字。

將一個破發點的txt_p7_TextChanged()開始,你會看到什麼是錯的。

試試這個

private void txt_p7_TextChanged(object sender, EventArgs e) 
    { 
     int number1, number2; 
     if (int.TryParse(txt_p1.Text, out number1) && int.TryParse(txt_p7.Text, out number2)) 
      txt_result.Text = (number1 - number2).ToString(); 
    } 
1

沒有錯誤信息,很難說出發生了什麼,但是從我所看到的是在數字完成之前觸發一個計算。

如果你輸入一個值txt_p1,並嘗試輸入一個負值txt_p7,進入「 - 」將觸發計算的條件是否滿足,由於包含字符串文本框都。問題是你沒有任何錯誤檢查轉換爲整數,所以它試圖將' - '轉換爲導致失敗的整數。

private void txt_p1_TextChanged(object sender, EventArgs e) 
    { 
     if ((!string.IsNullOrEmpty(txt_p1.Text)) && (!string.IsNullOrEmpty(txt_p7.Text))) 
     { 
      int val1, val2; 
      //Ensure both are valid integers 
      if (int.TryParse(txt_p1.Text, out val1) && int.TryParse(txt_p7.Text, out val2)) 
      { 
       txt_result.Text = (val1 - val2).ToString(); 
      } 
     } 
    } 

您需要驗證輸入轉換之前其他非數字字符可以進入,這將導致運行時出現故障。

+0

爵士..我說清楚。我想減去txt_p1與txt_p7 .. (txt_p1 - txt_p7)......現在的錯誤是在txt_p7 ..當我在txt_p7插入負值,它有錯誤..但如果txt_p7爲正值,它的工作..很奇怪,因爲它txt_p1還好輸入負值.. –

+0

正是在P1罰款,目前還沒有投入P7。這意味着這兩個文本框都沒有填充,因此你的空檢查說「p7爲空,不要嘗試和轉換」。如果您先輸入一個數字到p7中,然後在p1中輸入一個負數,您將會遇到同樣的錯誤。 –