Предположим, я позволяю номер пользовательского ввода: 1298743257884834 ... (пока потребности пользователя)сумма цифр от очень длинного числа
Пусть программа сказать, сколько цифр они?
затем дать результат по SUM them =?
Предположим, я позволяю номер пользовательского ввода: 1298743257884834 ... (пока потребности пользователя)сумма цифр от очень длинного числа
Пусть программа сказать, сколько цифр они?
затем дать результат по SUM them =?
Подсказка: использование BigInteger
structure найдено в System.Numerics
.
Прежде всего, вы можете узнать количество цифр в этом случае:
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);
}
}
Сумма будет ваш результат.
Вам также не нужно 'ToCharArray()'. 'foreach' поддерживает' string'. Вы можете напрямую использовать 'foreach (var c в цифрах)'. – CodesInChaos
Вам не хватает проверки ошибок. Любой нечисловой символ молча уменьшает сумму на единицу. – CodesInChaos
Согласен, я редактировал мой код, чтобы улучшить его. –
С помощью 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
Почему 'ToCharArray()'? 'string' реализует' IEnumerable
Что вы предлагаете вместо этого? –
Просто 'input.Sum (...)'. Вы можете использовать LINQ для любого типа, который реализует 'IEnumerable
Это пахнет домашней ... –
Это на вкус как это Aswell – BBekyarov
я бы просто попросить строку и итерацию над ней. Нет необходимости конвертировать в число. – CodesInChaos