строка mas[i, j] = Convert.ToDouble(arr[k++]); вызывает исключение, почему?(Индекс находится вне границ массива)

using System;
using System.IO;
namespace _8лаб
{
    class Program
    {
        static void Read(StreamReader sr, double[,] mas)//считывание с texti.txt
        {
            string str = sr.ReadLine();
            str = str.Replace("\r", " ");
            str = str.Replace("\n", " ");
            string[] arr = str.Split(' ');
            int k = 0;
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    **mas[i, j] = Convert.ToDouble(arr[k++]);**
                    Console.Write(mas[i, j] + " ");
                }
            }
            Console.WriteLine();
        }
        static void Print(StreamWriter sW, double[,] x, double[] arr) //вывод в текстовый файл
        {
            for (int i = 0; i < x.GetLength(0); i++)
            {
                for (int j = 0; j < x.GetLength(1); j++)
                {
                    sW.Write(x[i, j] + " ");
                }
            }
            sW.WriteLine();
        }
        static void Main()
        {
            string path = "text.txt"; //док для вывода
            StreamWriter sW = new StreamWriter(path); //поток для вывода
            string rep = "texti.txt"; //док для чтения
            StreamReader sR = new StreamReader(rep); //поток для чтения
            double[,] mas = new double[3, 3];
            double[] arr2 = new double[3];
            Read(sR, mas);
            sR.Close();
            Print(sW, mas, arr2);
            sW.Close();
            Console.ReadKey();
        }
    }
}

строка mas[i, j] = Convert.ToDouble(arr[k++]); вызывает исключение, почему?

Индекс находится вне границ массива


Ответы (2 шт):

Автор решения: Igor
        for (int i = 0; i < mas.GetLength(0) && k < arr.Length; i++)
        {
            for (int j = 0; j < mas.GetLength(1) && k < arr.Length; j++)
            {
→ Ссылка
Автор решения: Аделz Идрисова

я поняла в чем ошибка. я пыталась считать весь массив, но написала string str = sr.ReadLine();, а нужно было string str = sr.ReadToEnd();

→ Ссылка