Я уверен, что это что-то простое, что я просто не вижу, у меня есть цикл while, предлагающий пользователю размер массива, который будет использоваться для остальной части программы. Если пользователь вводит правильный вход, программа продолжается, и работает отлично, но если пользователь вводит неправильный ввод ...Цикл do-while не ждет ввода пользователем?
public static void main(String[] args)
{
// user enters up to 20 double values, stored in an array, user should enter 99999 to quit entering numbers. If user has not entered any numbers yet
// display an error message, otherwise, display each entered value and it's distance from the average
Scanner keyboard = new Scanner(System.in);
int arraySize = 0;
boolean isValid = false;
do
{
isValid = true;
arraySize = 0; // reset these values at start of each loop.
System.out.println("Enter an array size.");
try {
arraySize = keyboard.nextInt();
}
catch(NegativeArraySizeException mistake) {
System.out.println("Do not enter a negative number for the arrays size.");
System.out.println();
isValid = false;
}
catch(InputMismatchException mistake) {
System.out.println("Make sure to enter a valid number.");
System.out.println();
isValid = false;
}
} while (isValid == false);
Если пользователь вводит неверный ввод, например, «красный», блок улова пинает и печатает «Обязательно введите действительный номер». и «Введите размер массива». снова и снова, не давая пользователю возможность фактически вводить какие-либо данные. Я решил сбросить переменную arraySize, чтобы исправить это, но это не так. Я предполагаю, что в буфере клавиатуры есть вещи, но до сих пор не работало ни одна комбинация пустых printlns.
Я слышал, что Исключения не должны использоваться для проверки ввода пользователя. Почему это?
Независимо от того, что это не относится к этому вопросу, так как это упражнение в обработке исключений.
mmuzahid почти нет. Я добавил способ проверить отрицательность входного значения. Пожалуйста, проверьте –