У меня есть сетка данных 6x6, созданная из случайно сгенерированных чисел, и я хочу прочитать каждую ячейку в сетке данных и проверить, сколько чисел являются дубликатами. Я подумал, что хорошей идеей будет получить значение каждой ячейки в массив и отсортировать его , как только он был отсортирован, я проверял бы все значения и одно рядом с ним и смотрел бы, были ли они одинаковыми, и если бы они были, я увеличил бы счетчик. Моя проблема в том, что когда я запускаю этот код, я получаю System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'
в части, где мы перебираем сетку данных, эту строку "numeros[c] = Convert.ToInt16(cell.Value);
".
После некоторого тестирования я попытался показать все значения ячеек, и они выглядели как 0.
private void button2_Click(object sender, EventArgs e)
{
int cont = 0;
int[] numeros = new int[36];
int c = 0;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
numeros[c] = Convert.ToInt16(cell.Value);
c++;
}
}
Array.Sort(numeros);
label12.Text = "";
for(int i = 0; i < 36; i++)
{
label12.Text += numeros[i].ToString() + ", ";
if (i == 35)
{
break;
}
else
{
if (numeros[i] == numeros[i + 1])
{
cont++;
}
}
}
label7.Text = cont.ToString();
}