Я знаю, о чем говорится в проблеме, но я не понимаю, как моя программа выводит значение, находящееся за пределами массива.
У меня есть массив целых чисел от 0 до 8, что означает, что он может содержать 9 целых чисел, верно? У меня есть int, который проверяется, чтобы убедиться, что входное значение пользователя равно 1-9. Я удаляю единицу из целого числа (вот так)
if (posStatus[intUsersInput-1] == 0) //if pos is empty
{
posStatus[intUsersInput-1] += 1;
}//set it to 1
затем я сам ввожу 9 и получаю сообщение об ошибке. Он должен получить доступ к последнему int в массиве, поэтому я не понимаю, почему я получаю сообщение об ошибке. Соответствующий код:
public int[] posStatus;
public UsersInput()
{
this.posStatus = new int[8];
}
int intUsersInput = 0; //this gets try parsed + validated that it's 1-9
if (posStatus[intUsersInput-1] == 0) //if i input 9 it should go to 8?
{
posStatus[intUsersInput-1] += 1; //set it to 1
}
Ошибка:
"Index was outside the bounds of the array." "Index was outside the bounds of the array."
new int[9]
... - person Jon Skeet   schedule 11.02.2014new int[8]
создает массив из 8 элементов, поэтому допустимые индексы равны [0,7]. - person Lee   schedule 11.02.2014