Je suis conscient de la nature du problème, mais je ne comprends pas comment mon programme génère une valeur en dehors du tableau.
J'ai un tableau d'ints qui est 0 - 8 ce qui signifie qu'il peut contenir 9 ints, correct? J'ai un int qui est vérifié pour s'assurer que la valeur d'entrée des utilisateurs est 1-9. J'enlève un de l'entier (comme si)
if (posStatus[intUsersInput-1] == 0) //if pos is empty
{
posStatus[intUsersInput-1] += 1;
}//set it to 1
alors je saisis moi-même 9 et j'obtiens l'erreur. Il devrait accéder au dernier int du tableau, donc je ne vois pas pourquoi je reçois une erreur. Code pertinent:
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
}
Erreur:
"Index was outside the bounds of the array." "Index was outside the bounds of the array."
Vous avez déclaré un tableau pouvant stocker 8 éléments et non 9.
this.posStatus = new int[8];
Cela signifie que postStatus contiendra 8 éléments de l'index 0 à 7.
public int[] posStatus;
public UsersInput()
{
//It means postStatus will contain 9 elements from index 0 to 8.
this.posStatus = new int[9];
}
int intUsersInput = 0;
if (posStatus[intUsersInput-1] == 0) //if i input 9, it should go to 8?
{
posStatus[intUsersInput-1] += 1; //set it to 1
}
// si je saisis 9 il devrait aller à 8?
Vous devez toujours travailler avec les éléments du tableau. Vous compterez 8 éléments lors de la boucle dans le tableau, mais ils continueront à être tableau (0) - tableau (7).