使用textBox添加三个数字

时间:2011-08-31 06:13:43

标签: c# visual-studio-2010 add

我有一个文本框1两个和三个。在textbox1数字0中,在两个第一和第二个数字中使用此代码

textBox4.Text = "" + 
  (int.Parse(textBox1.Text) + 
  (int.Parse(textBox2.Text + 
  (int.Parse(textBox3.Text)))));

但结果是012 ..你可以拥有全部金额,3?

5 个答案:

答案 0 :(得分:4)

int result = 
  int.Parse(textBox1.Text) + 
  int.Parse(textBox2.Text) + 
  int.Parse(textBox3.Text);
textBox4.Text = result.ToString();

试试这个

答案 1 :(得分:2)

这里发生的事情是从左到右评估总和,这导致执行不同类型的添加而不是您期望的。在C#中,您可以添加两个字符串。如果您将"foo"添加到"bar",那么这将为您提供字符串"foobar"。如果将字符串和数字一起添加,则它会将数字转换为字符串并将两个字符串一起添加。因此"foo"+13会产生"foo13"

所以你的例子中发生的事情非常复杂。从内部开始,您有:int.Parse(textBox3.Text)。这需要textBox3.Text "2"并将其转换为数字2。接下来,您执行textBox2.Text + (int.Parse(textBox3.Text)获取字符串"1",然后将数字2添加到其中。这会导致数字2转换为字符串"2",然后添加"1"+"2",将字符串"12"作为答案,因为字符串是通过加入字符串来添加的。接下来,您执行int.Parse(textBox2.Text + (int.Parse(textBox3.Text)),将字符串"12"转换为数字12。你也可以int.Parse(textBox1.Text)给出数字0。所以此时你正在添加"" + 0 + 12。它从左到右执行此操作,首先将""添加到0。这会导致0转换为"0""" + "0"会转换为"0"。然后我们添加"0" + 12。执行此操作后,12会转换为"12""0"+"12"会转换为"012"

如果不做大的改动,只需更改括号即可获得正确的结果。如果在将任何数字添加到字符串之前将所有数字全部添加在一起,那么您将获得正确的结果。我们可以用括号来完成这个。

textBox4 = "" + (int.Parse(textBox1.Text) + int.Parse(textBox2.Text) + int.Parse(textBox3.Text));

简而言之,关注正在发生的事情以及类型是什么非常重要,因为添加两个字符串与添加两个数字完全不同。

答案 2 :(得分:1)

将“标记放在最先进行常规数学运算,然后进行字符串转换。

答案 3 :(得分:1)

你可以这样说:

int sum=int.Parse(textBox1.Text) + int.Parse(textBox2.Text) + int.Parse(textBox3.Text);
textBox4.Text = String.Format("{0}",sum);

答案 4 :(得分:1)

这里有2个问题。第一个是开头的“”。当您执行第一个+时,首先解析textBox1.Text,然后通过字符串连接运算符再次转换为字符串。我更喜欢这样的东西:

textBox4.Text = (int.Parse(textBox1.Text) + int.Parse(textBox2.Text) + int.Parse(textBox3.Text)).ToString();

第二个问题(真正的问题)是你错过了textBox2.Text之后的右括号。通过这种方式,您首先连接textBox1.Text(“1”)和int.Parse(textBox2.Text).ToString()(“2”),并且仅在此时解析结果。如果没有遗漏括号,则代码将给出“3”而不是“012”