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

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

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

Всем здравствовать! Может кто поможет, я никак не пойму почему вылетает исключение вида System.IndexOutOfRangeException при попытке записать информацию из файла в массив. Отладчиком прогнал до ошибки, не увидел в чем проблема. Вот написал такой код:
 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");
}
Сам файл Xv текстовый вида: 3.0 2.6 ( это только для пояснения: конец строки) 2.3 0.7 и т.д.

Решение задачи: «.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;
}

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


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

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

8   голосов , оценка 4.125 из 5
Похожие ответы