Добавьте три числа с textBox - PullRequest
0 голосов
/ 31 августа 2011

У меня есть текстовое поле1 два и три. В textbox1 номер ноль, в два номер один и в три номер два и используйте этот код

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

, но результат 012 .. Вы можете получить всю сумму, 3?

Ответы [ 5 ]

4 голосов
/ 31 августа 2011
int result = 
  int.Parse(textBox1.Text) + 
  int.Parse(textBox2.Text) + 
  int.Parse(textBox3.Text);
textBox4.Text = result.ToString();

Попробуйте это

2 голосов
/ 31 августа 2011

Здесь происходит то, что сумма оценивается слева направо, и это приводит к выполнению сложения другого типа, чем вы ожидаете.В 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));

Короче говоря, очень важно обратить внимание на то, что происходит в каком порядке и на какие типы, потому что добавление двух строк совершенно отличается от добавления двух чисел.

1 голос
/ 31 августа 2011

У вас есть 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»

1 голос
/ 31 августа 2011

Вы можете что-то вроде этого:

int sum=int.Parse(textBox1.Text) + int.Parse(textBox2.Text) + int.Parse(textBox3.Text);
textBox4.Text = String.Format("{0}",sum);
1 голос
/ 31 августа 2011

Поставьте метку "в конце" так, как сначала выполняется обычная математика, а затем преобразование строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...