.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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д