Suren97 Ответов: 4

C# как получить сумму цифр числа в текстовом поле


Например,в текстовом поле я написал 1020, когда я нажму на кнопку Explode, она покажет 3 в текстовом поле, потому что 1+0+2+0=3.

Что я уже пробовал:

Я уже так устал`
int total = 0;
total = int.Parse(button1.Text) + int.Parse(button2.Text) + int.Parse(button3.Text) + int.Parse(button4.Text) + int.Parse(button5.Text) + int.Parse(button6.Text) + int.Parse(button7.Text) + int.Parse(button8.Text) + int.Parse(button9.Text) + int.Parse(button11.Text);
textbox.Text = total.ToString();


Но в этом случае, когда я нажимаю на кнопку взрыва, она всегда показывает 45`, потому что 1+2+3+4+5+6+7+8+9=45.
Как я могу написать этот код, чтобы он показывал мне сумму моих входных чисел?

4 Ответов

Рейтинг:
36

RickZeeland

Попробовать это:

int total = 0;

foreach (char ch in this.textBox1.Text)
{
    total += int.Parse(ch.ToString());
}

this.textBox1.Text = total.ToString();


Suren97

Большое вам спасибо Су :)

Maciej Los

5ed!

phil.o

И мои 5 тоже.

RickZeeland

Мучас Грасиас !

Рейтинг:
2

BillWoodruff

Есть еще:

int num = "1020".Sum(n => n & 15);

int sum = (int)"1020".Sum(n => Char.GetNumericValue(n));
Примечание: 'GetNumericValue возвращает double, и я нахожу это странным.


Richard Deeming

+5. Гораздо более эффективным, чем преобразование каждого char К string а затем разбираем его обратно на int! :)

Обуглить.Метод getnumericvalue[^] возвращает double потому что некоторые символы представляют собой дроби. Например:

* \u00BC = ¼ = 0.25
* \u00BD = ½ = 0.5
* \u00BE = ¾ = 0.75

BillWoodruff

Спасибо, Ричард, я думал, что это может иметь какое-то отношение к Юникоду, но никогда не думал о дробях :)

Рейтинг:
2

Tim Carmichael

Если вы хотите ввести свои данные в одно текстовое поле, давайте начнем с него.
Вместо того чтобы смотреть на значение в каждом из 11 текстовых полей, как у вас есть в настоящее время, создайте цикл для просмотра каждой позиции в данных, введенных в одно текстовое поле.
Затем добавьте значение каждой позиции к общей сумме.

Учитывая это, вы должны быть в состоянии написать код.
Если после написания кода для использования цикла у вас все еще есть вопрос, опубликуйте свой измененный код.


Рейтинг:
0

Maciej Los

Альтернативно решению №1 путем RickZeeland[^], я бы предоставил решение Linq:

string mytext = "1020";
int sumOfChars = mytext.Sum(x=>Convert.ToInt32(x.ToString())); //3 


phil.o

5 :)

Maciej Los

Спасибо, Фил.

RickZeeland

Элегантный, 5d !

Maciej Los

- Спасибо, Рик.