Итак, приведена кодировка для: • Проектировать, реализовывать, тестировать и дебугировать программу C#, чтобы отображать частоты суммы двух кубиков для 100 рулонов. Включите следующее:Ошибка в частотном коде на C#
Объявление массива, представляющего возможные результаты бросков двух кубиков.
Для каждой записи в файле приращивайте элемент массива, соответствующий этому результату.
Последний, дисплей счетчика частоты для этого моделирования
Но я получаю сообщение об ошибке:
InvalidArgument=Value of '10' is not valid for 'index'.
Parameter name: index.
я поставил ***
так что вы знаете, где сообщение показывается на части кодирование. Я не понимаю, что я делаю неправильно. Пожалуйста помоги.
private void createButton_Click(object sender, EventArgs e)
{
int[] rollArray = new int[100]; //Creates Array for holding rolls.
int i;
int dice1; //Dice 1
int dice2; //Dice 2
int total; //Dice Totals.
int index;
int rollValue;
FrequencySum.Items.Clear();
for (i = 0; i < 10; i++) //index numbering starting at 0.
{
FrequencySum.Items.Add("0"); //Frequency values between 2 and 12.
}
for (i = 0; i < 100; i++) //100 Dice Rolls, indexing starts at 0, there is 100 & Loop.
{
dice1 = diceRoll.Next(6) + 1; //Rolls Dice 1
dice2 = diceRoll.Next(6) + 1; //Rolls Dice 2.
rollValue = dice1 + dice2; //value of the rolls for dice 1 and dice 2.
index = rollValue - 2; //roll 2 is item 0 and roll 12 is item 10.
-----►FrequencySum.Items[index] = (int.Parse (FrequencySum.Items[index].ToString())+ 1).ToString(); *** ◄------- this is where the error comes up
}
total = 0; //Displays total of rolls.
for (i = 0; i < 10; i++)
{
total += int.Parse(FrequencySum.Items[i].ToString());
}
FrequencySum.Items.Add(total);
}
Проблема в том, что вы не выделили достаточное количество элементов в массиве 'Frequency.Items []'. Когда вы катите 12, вы вычитаете 2, чтобы получить индекс 10, но вы создали пространство для индексов с 0 по 9. –
@BrianRogers - Итак, как бы я исправить это? – LaTachuela
См. Ответ Руфуса Л. –