строка 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();