2013-11-26 3 views
-1

Предположим, я позволяю номер пользовательского ввода: 1298743257884834 ... (пока потребности пользователя)сумма цифр от очень длинного числа

Пусть программа сказать, сколько цифр они?

затем дать результат по SUM them =?

+4

Это пахнет домашней ... –

+1

Это на вкус как это Aswell – BBekyarov

+0

я бы просто попросить строку и итерацию над ней. Нет необходимости конвертировать в число. – CodesInChaos

ответ

0

Прежде всего, вы можете узнать количество цифр в этом случае:

string digits = TextBox1.Text; 
long digitsnumber = digits.Length; 

Тогда подводить каждое число, вы должны цикла в строке, как массив полукокса, таким образом, и литая значение автомобиля в целое с GetNumericValue методом System.Char:

int sum = 0; 
foreach (var c in digits) 
{ 
    if (Char.IsNumber(c)) 
    { 
     sum += (int)Char.GetNumericValue(c); 
    } 
} 

Сумма будет ваш результат.

+0

Вам также не нужно 'ToCharArray()'. 'foreach' поддерживает' string'. Вы можете напрямую использовать 'foreach (var c в цифрах)'. – CodesInChaos

+0

Вам не хватает проверки ошибок. Любой нечисловой символ молча уменьшает сумму на единицу. – CodesInChaos

+0

Согласен, я редактировал мой код, чтобы улучшить его. –

2

С помощью LINQ

string input = // get input from console, textbox, ... 
int inputLength = input.Length; // get number of digits, although you don't need it here 
int sum = input.Sum(c => int.Parse(c.ToString())); // summarize 
+0

Почему 'ToCharArray()'? 'string' реализует' IEnumerable ' – CodesInChaos

+1

Что вы предлагаете вместо этого? –

+2

Просто 'input.Sum (...)'. Вы можете использовать LINQ для любого типа, который реализует 'IEnumerable '. Поскольку 'string' уже делает это, нет необходимости преобразовывать в массив перед использованием LINQ. – CodesInChaos

Смежные вопросы