我有一个文本框1两个和三个。在textbox1数字0中,在两个第一和第二个数字中使用此代码
textBox4.Text = "" +
(int.Parse(textBox1.Text) +
(int.Parse(textBox2.Text +
(int.Parse(textBox3.Text)))));
但结果是012 ..你可以拥有全部金额,3?
答案 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”