user3245390 user3245390 - 3 months ago 14
C# Question

Error : Index was outside the bounds of the array.

I'm aware of what the issue is stating but I am confused to how my program is outputting a value that's outside of the array..

I have an array of ints which is 0 - 8 which means it can hold 9 ints, correct?
I have an int which is checked to make sure the users input value is 1-9. I remove one from the integer (like so)

if (posStatus[intUsersInput-1] == 0) //if pos is empty
{
posStatus[intUsersInput-1] += 1;
}//set it to 1


then I input 9 myself and I get the error. It should access the last int in the array, so I don't see why I'm getting an error.
Relevant code:

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
}


Error:

"Index was outside the bounds of the array." "Index was outside the bounds of the array."

Answer

You have declared an array that can store 8 elements not 9.

this.posStatus = new int[8]; 

It means postStatus will contain 8 elements from index 0 to 7.

Comments