.NET 4.x Исключение при вводе информации из файла - C#

Узнай цену своей работы

Формулировка задачи:

Всем здравствовать! Может кто поможет, я никак не пойму почему вылетает исключение вида System.IndexOutOfRangeException при попытке записать информацию из файла в массив. Отладчиком прогнал до ошибки, не увидел в чем проблема. Вот написал такой код:
Листинг программы
  1. private double[,] FromFile(string filename) // функция возвращает массив, где первый столбец время, второй значение параметра
  2. {
  3. FileStream fin = new FileStream(filename, FileMode.Open, FileAccess.Read); // открывает файл с именем filename на чтение
  4. StreamReader sr = new StreamReader(fin, Encoding.UTF8);
  5. string Line; // строка файла
  6. string[] strArr; // массив для записи значений строки, разделенных разделителем
  7. double[,] array1 = new double[,] {{0}}; // массив результата
  8. char[] charArr = new char[] {' '};
  9. int i = 0;
  10. int j = 0;
  11. while (sr.EndOfStream != true)
  12. {
  13. Line = sr.ReadLine();
  14. strArr = Line.Split(charArr);
  15. for (i = 0; i < 2; i++) //strArr.Length
  16. array1[j, i] = Convert.ToDouble(strArr[i]);
  17. j++;
  18. }
  19. return array1;
  20. }
Который вызываю здесь:
Листинг программы
  1. private void DrawGraph()
  2. {
  3. // Создаем экземпляр класса MasterPane, который представляет собой область,
  4. // на которой "лежат" все графики (экземпляры класса GraphPane)
  5. double[,] arrPane1 = FromFile("C:\\Users\\user\\Documents\\Visual Studio 2010\\Projects\\CiSharp\\Zed_plot5\\Zed_plot5\\Xv.txt");
  6. }
Сам файл Xv текстовый вида: 3.0 2.6 ( это только для пояснения: конец строки) 2.3 0.7 и т.д.

Решение задачи: «.NET 4.x Исключение при вводе информации из файла»

textual
Листинг программы
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3.     double[][] Data = FromFile(@"C:\Xv.txt");
  4. }
  5.  
  6. private double[][] FromFile(string filename)
  7. {
  8.     string AllText = string.Empty;
  9.     using (StreamReader sr = new StreamReader(filename, Encoding.UTF8))
  10.     {
  11.         // Считываем весь текст
  12.         AllText = sr.ReadToEnd();
  13.     }
  14.  
  15.     // Разделяем на строки
  16.     string[] Lines = AllText.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
  17.     double[][] Array1 = new double[Lines.Length][];
  18.  
  19.     for(int i = 0; i < Lines.Length; i++)
  20.     {
  21.         // Разделяем на элементы через пробел
  22.         string[] Items = Lines[i].Split(' ');
  23.         Array1[i] = new double[Items.Length];
  24.         for(int j = 0; j < Items.Length; j++)
  25.         {
  26.             Array1[i][j] = Convert.ToDouble(Items[j]);
  27.         }
  28.     }
  29.  
  30.     return Array1;
  31. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы