@Viva_vir

Как присвоить массиву int значение символа из строки в строковом массиве?

Имеются такие строки кода

var statistics = new int[10];
var arrStr = text.Split(' '); // предположим, что под индексом 0 лежит число 123

Console.WriteLine(arrStr[0][0]); // выдаст 1 
statistics[Convert.ToInt32(arrStr[0][0])] = 1; // ошибка переполнение массива

И тут я ловлю ступор непонимания. Я хочу присвоить statistics 1, а за индекс я хочу взять первый разряд строки из массива строк. Не понимаю как происходит переполнение и куда копать.
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
Ошибка возникает из-за того что Convert.ToInt32(char) выдаёт код символа, а не число.
В твоём случае нужно так:
var text = "123 321";
var statistics = new int[10];
var arrStr = text.Split(' '); // И не надо ничего предполагать. Под индексом 0 лежит 123

Console.WriteLine(arrStr[0][0]); // выдаст 1 
// Ошибка из-за того что Convert.ToInt32(arrStr[0][0]) == 49 - это код символа '1'
// statistics[Convert.ToInt32(arrStr[0][0])] = 1; // ошибка переполнение массива

// Гарантируем, что arrStr[0][0] - цифра и парсим её.
var digit = arrStr[0][0];
var idx = digit is >= '0' and <= '9'
  ? digit - '0'
  : throw new InvalidOperationException("Not a digit");
statistics[idx] = 1; // Нет ошибки
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы