Получение суммы всех чисел в массиве символов - PullRequest
0 голосов
/ 22 октября 2019

Я преобразовал string в char[], но теперь, когда я пытаюсь получить сумму всех чисел в массиве, я получаю неправильный вывод. Цель состоит в том, что, если пользователь вводит число в виде строки, например - 12, вывод должен быть 3, то есть 1 + 2, другой пример - 123 должен быть 1+2+3 = 6.

Я новичок в кодировании. Приношу свои извинения за возможные неудобства.

static void Main(string[] args)
{
    int sum = 0;
    String num = Console.ReadLine();
    char[] sep = num.ToCharArray();
    for (int i = 0; i < sep.Length; i++)
    {
        sum += (sep[i]);
    }
    Console.WriteLine(sum);
    Console.ReadLine();
}

Ответы [ 3 ]

2 голосов
/ 22 октября 2019

Вы в настоящее время добавляете значения ascii. Значение ascii, равное 1, равно 49, а значение 2 равно 50 ... Вам необходимо использовать int.TryParse для преобразования из char в int.

int value;
for (int i = 0; i < sep.Length; i++)
{
    if (int.TryParse (sep[i].ToString(),out value))
        sum += value;
}
2 голосов
/ 22 октября 2019

Если вы хотите вычислить сумму цифр, вам нужно сначала преобразовать каждый символ в int. Char должен быть преобразован в строку, а затем проанализирован в int. Ваш оригинальный код содержит неявное преобразование, которое преобразует 1 и 2 в 49 и 50 (ASCII), таким образом, сумма в итоге составит 99.

Попробуйте вместо этого код:

static void Main(string[] args)
{
    int sum = 0;
    String num = Console.ReadLine();
    char[] sep = num.ToCharArray();
    for (int i = 0; i < sep.Length; i++)
    {
        sum += int.Parse(sep[i].ToString());
    }
    Console.WriteLine(sum);
    Console.ReadLine();
}
1 голос
/ 22 октября 2019

Просто для развлечения вот решение LINQ.

var sum = num.Select( c => int.Parse((string)c) ).Sum();

Это решение использует тот факт, что string также является IEnumerable<char> и поэтому может рассматриваться как список символов.

Оператор Select выполняет итерацию по символам и преобразует каждый из них в целое число, предоставляя лямбда-выражение (то есть материал =>), которое отображает каждый символ в его целочисленный эквивалент. Символ обычно обозначается "идет к" . Вы можете произнести целое выражение «C идет к любому целому числу, которое может быть проанализировано из него».

Затем мы вызываем Sum(), чтобы преобразовать полученный список целых чисел в числовую сумму.

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