Конвертировать ReadLine () в int

1

У меня есть файл, который содержит в каждой строке значение из {-1, 0, 1, 2, 3}. Это выглядит так:

Изображение 174551

Я хочу поместить все эти значения в массив типа int следующим образом:

int[] linesValue = new int[NUMBER_OF_LINES]; 
int i; 

for (i = 0; i < NUMBER_OF_LINES; i++)
    {
        string tmpVal = reader.ReadLine(); 
        linesValue[i] = Convert.ToInt32(tmpVal);
    }

"NUMBER_OF_LINES" - это частный int, а "reader" - StreamReader. Когда я запускаю код, он дает мне ошибку: "Строка ввода не была в правильном формате". Я попробовал reader.ReadLine(). ToString(), но он все еще не работает. Я был бы очень признателен, если вы, ребята, можете мне помочь с этой проблемой.

  • 0
    Вероятно, вы пытаетесь конвертировать, включая разрыв строки.
  • 1
    Я думаю, вы получите исключение при чтении последней строки, потому что она пуста :)
Показать ещё 7 комментариев
Теги:
io
parsing
integer
readline

1 ответ

3
Лучший ответ

Вы получаете последнюю строку или разрывы строк как пустую строку в своей string и которая не может быть преобразована в int, следовательно, исключение. Просто добавьте проверку для string.IsNullOrWhiteSpace как:

{
    string tmpVal = reader.ReadLine(); 
    if(!string.IsNullOrWhiteSpace(tmpVal))
    {
           linesValue[i] = Convert.ToInt32(tmpVal);
    }
}

Также убедитесь, что вы поддерживаете свой index с помощью этой проверки, поэтому вы можете получить пустые записи в вашем массиве из-за увеличения индекса.

Вы также можете использовать File.ReadLines и анализировать каждую строку в массиве int например:

int[] array = File.ReadLines("filePath")
    .Where(r => !string.IsNullOrWhiteSpace((r)))
    .Select(r => int.Parse((r)))
    .ToArray();

Ищите метод int.TryParse. Группа методов TryParse не вызывает исключение, если синтаксический анализ не выполняется. Они возвращают bool указывающий, что синтаксический анализ был успешным или нет, и анализируемое значение предоставляется в параметре out.

  • 0
    Это сработало ! Огромное спасибо.
  • 0
    @ tudor07, пожалуйста

Ещё вопросы

Сообщество Overcoder
Наверх
Меню