#c#
#c#
Вопрос:
Я пытаюсь прочитать текстовый файл, который содержит строки чисел, и я хочу иметь возможность конвертировать каждую строку из файла в Int и сохранять ее в массиве, чтобы я мог позже выполнять математические вычисления.
Это то, что я пробовал в Visual Studio, и оно выдает сообщение «System.Исключение FormatException: ‘Входная строка была в неправильном формате.'».
static void Main(string[] args)
{
using (StreamReader List1 = new StreamReader("path of text file.txt"))
{
string input;
List<string> High256 = new List<string>();
while((input = List1.ReadLine()) != null)
{
Convert.ToInt32(input);
}
High256.Add(input);
Console.WriteLine(High256);
}
}
Комментарии:
1. Вы отладили и проверили ввод? 😉
2. Добро пожаловать в Stack Overflow. Использовали ли вы отладчик или другую диагностику (например, записывая значение
input
в консоль), чтобы увидеть, какое значение не выполняется?3. Опубликуйте образец данных в файле.
4. Какое значение вы получаете в
input
переменной?5.
int[] array = File.ReadLines("path of text file.txt").Where(line => !string.IsNullOrEmpty(line)).Select(line => int.Parse(line)).ToArray();
Ответ №1:
Сначала вам нужно проверить, можете ли вы преобразовать в int или нет.
static void Main(string[] args)
{
var List1 = new File.ReadAllLines("path of text file.txt");
string input;
List<string> High256 = new List<string>();
foreach(var item in List1)
{
if(int.TryParse(item?.Trim(), out var tempInt))
{
High256.Add(tempInt);
Console.WriteLine(High256);
}
}
}
или в одну строку:
var list = File.ReadAllLines("path")
.Where(x => int.TryParse(x, out var temp))
.Select(t=>int.Parse(t.Trim())).ToList();
Ответ №2:
Вы можете использовать Linq и сделать следующее:
int[] array = File.ReadAllLines("path").Select(t=>Convert.ToInt32(t)).ToArray();
это прочитает все строки из файла и преобразует каждую строку в тип int32, наконец, вы получите массив int!
Комментарии:
1. Если есть проблема, пожалуйста, приложите файл
2. Это не решит проблему FormatException, которую получает OP
3. @AmirNo-Family: Ну, не лучше ли ему исправить файл, чем сделать код более щадящим? Единственное описание файла, которое у нас есть, — это «текстовый файл, содержащий строки чисел». Если она должна содержать только числа, ему не нужно заставлять код работать с не числами, вместо этого кажется, что это ошибка, которая находится в файле.