Ответ 1
Вы объявили массив, который может хранить 8 элементов, а не 9.
this.posStatus = new int[8];
Это означает, что postStatus будет содержать 8 элементов из индекса от 0 до 7.
Я знаю, о чем идет речь, но я смущен тем, как моя программа выводит значение вне массива.
У меня есть массив ints, который равен 0 - 8, что означает, что он может содержать 9 ints, правильно? У меня есть 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 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."
Вы объявили массив, который может хранить 8 элементов, а не 9.
this.posStatus = new int[8];
Это означает, что postStatus будет содержать 8 элементов из индекса от 0 до 7.
public int[] posStatus;
public UsersInput()
{
this.posStatus = new int[9]; //It means postStatus will contain 9 elements from index 0 to 8.
}
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
}
//если я ввожу 9, он должен перейти к 8?
Вам все равно придется работать с элементами массива. Вы будете считать 8 элементов при прохождении через массив, но они все равно будут массивом (0) - массивом (7).
string dob1 = drUserInfo["dtpDateOfBirth"].ToString();
DateTime dtt = DateTime.ParseExact(dob1, "MM-dd-yyyy", CultureInfo.InvariantCulture);
string date = dtt.ToString("yyyy-MM-dd");
txtDOB.Text = date;