.NET 4.x Исключение при вводе информации из файла - C#
Формулировка задачи:
Всем здравствовать!
Может кто поможет, я никак не пойму почему вылетает исключение вида System.IndexOutOfRangeException при попытке записать информацию из файла в массив. Отладчиком прогнал до ошибки, не увидел в чем проблема.
Вот написал такой код:Который вызываю здесь:
Сам файл Xv текстовый вида: 3.0 2.6 ( это только для пояснения: конец строки)
2.3 0.7 и т.д.
private double[,] FromFile(string filename) // функция возвращает массив, где первый столбец время, второй значение параметра { FileStream fin = new FileStream(filename, FileMode.Open, FileAccess.Read); // открывает файл с именем filename на чтение StreamReader sr = new StreamReader(fin, Encoding.UTF8); string Line; // строка файла string[] strArr; // массив для записи значений строки, разделенных разделителем double[,] array1 = new double[,] {{0}}; // массив результата char[] charArr = new char[] {' '}; int i = 0; int j = 0; while (sr.EndOfStream != true) { Line = sr.ReadLine(); strArr = Line.Split(charArr); for (i = 0; i < 2; i++) //strArr.Length array1[j, i] = Convert.ToDouble(strArr[i]); j++; } return array1; }
private void DrawGraph() { // Создаем экземпляр класса MasterPane, который представляет собой область, // на которой "лежат" все графики (экземпляры класса GraphPane) double[,] arrPane1 = FromFile("C:\\Users\\user\\Documents\\Visual Studio 2010\\Projects\\CiSharp\\Zed_plot5\\Zed_plot5\\Xv.txt"); }
Решение задачи: «.NET 4.x Исключение при вводе информации из файла»
textual
Листинг программы
private void button1_Click(object sender, EventArgs e) { double[][] Data = FromFile(@"C:\Xv.txt"); } private double[][] FromFile(string filename) { string AllText = string.Empty; using (StreamReader sr = new StreamReader(filename, Encoding.UTF8)) { // Считываем весь текст AllText = sr.ReadToEnd(); } // Разделяем на строки string[] Lines = AllText.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); double[][] Array1 = new double[Lines.Length][]; for(int i = 0; i < Lines.Length; i++) { // Разделяем на элементы через пробел string[] Items = Lines[i].Split(' '); Array1[i] = new double[Items.Length]; for(int j = 0; j < Items.Length; j++) { Array1[i][j] = Convert.ToDouble(Items[j]); } } return Array1; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д