2015-11-20 64 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中输入一个负数,您将会遇到同样的错误。 –