Я читаю строку из файла и пытаюсь преобразовать ее в удвоенную, но она говорит:
1,55
Необработанное исключение: System.FormatException: входная строка не былав правильном формате.в System.Number.ParseDouble (строковое значение, параметры NumberStyles, NumberFormatInfo numfmt) в System.Convert.ToDouble (строковое значение) в ConsoleApp6.Logic.read () в C: \ Users \ sashk \ Source \ Repos \ ConsoleApp6 \ ConsoleApp6 \Class2.cs: строка 123 в ConsoleApp6.Program.Main (String [] args) в C: \ Users \ sashk \ Source \ Repos \ ConsoleApp6 \ ConsoleApp6 \ Program.cs: строка 19
Itпечатает первый класс, но он блокирует второй дубль, я не знаю, почему.Вот код:
public void read(){
string[] textes = File.ReadAllLines(@"C:\Users\sashk\Source\Repos\ConsoleApp6\ConsoleApp6\save.txt", Encoding.Default);
double[] gread = new double[40];
var excluded = new[] { "Name:", "FacultyNumber:", "Grades:", "AverageGrade:" };
var dot = "," ;
List<string> texts = new List<string>();
int i = 0;
int z = 0;
foreach (string text in textes){
string[] words = textes[i].Split(' ');
for (int j = 0; j < words.Length; j++){
if (!excluded.Contains(words[j])){
texts.Add(words[j]);
// Console.WriteLine(words[j]);
}
}
for (int j = 3; j < texts.Count; j++){
if (!System.Text.RegularExpressions.Regex.IsMatch(texts[j], @"^[a-zA-Zа-яА-Я ]+$")){
var newValue = texts[j].Replace(',', '.');
Console.WriteLine(newValue);
gread[z] = Convert.ToDouble(newValue);
z++;
}
}
addStudent(texts[1], Convert.ToInt32(texts[2]), gread);
i++;
}
//for (int j = 0; j < texts.Count; j++)
// {
// Console.WriteLine(texts[j]);
// }
}
Содержимое этого файла:
Name: as FacultyNumber: 4 Grades: 1,55 5,55 9,55 AverageGrade: 5
Name: asd FacultyNumber: 2 Grades: 1,23 4,56 7,89 AverageGrade: 4,56
Name: ad FacultyNumber: 3 Grades: 2,55 4,55 7,55 AverageGrade: 4,33
Name: ddd FacultyNumber: 1 Grades: 2,55 5,55 9,55 AverageGrade: 4
Кажется, он правильно отформатирован, но я не знаю, почему он падает?Я проверил наличие лишних пробелов, но их нет.