Исключение: Индекс находился вне границ массива
На строке First[i, j] = rnd.Next(0, 100); выдает исключение "Индекс находится вне границ массива"
public class Massiv
{
public static int n = 0;
public double[,] First = new double[n, n];
public double[,] Second = new double[n, n];
public double[,] Third = new double[n, n];
public double Max;
public double Maximum(int j)
{
double Maxim = 0;
for(int i = 0; i < n; i++)
{
if (Second[i,j] > Maxim)
{
Maxim = Second[i, j];
}
}
return Maxim;
}
public void NaMasse(ListBox lb)
{
lb.Items.Clear();
Random rnd = new Random();
rnd.NextDouble();
for(int i = 0; i < n; i++)
{
for(int j = 0;j < n; j++)
{
First[i, j] = rnd.Next(0, 100);
Second[i, j] = rnd.Next(0, 100);
}
}
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
Third[i, j] = First[i, j] * Maximum(j);
}
}
for(int i = 0; i < n; i++)
{
string s = " ";
for(int j = 0; j < n; j++)
{
s += Third[i, j].ToString("F2") + " ";
}
lb.Items.Add(s);
}
}
}
private void button1_Click(object sender, EventArgs e)
{
Massiv ma = new Massiv();
Massiv.n = int.Parse(textBox1.Text);
ma.NaMasse(listBox1);
}
Ответы (1 шт):
Автор решения: A K
→ Ссылка
Когда вы создаёте ma через вызов new Massiv() у вас УЖЕ создаются массивы First, Second и Third и размер их - ноль, т.к. n ещё не задана.
Вот посмотрите что под отладчиком:
Вы ещё не дошли до присвоения n, а массивы уже есть и их размер не 4, а ноль. После присвоения n = 4 их размер так и останется ноль.
Поэтому передавайте n в конструктор, а затем аккуратно инициализируйте правильным значением:
public class Massiv
{
private int n = 0;
public double[,] First;
public double[,] Second;
public double[,] Third;
public Massiv(int n)
{
this.n = n;
First = new double[n, n];
Second = new double[n, n];
Third = new double[n, n];
}

