Мои методы read() разбиваются каждый раз, когда я ввожу строку или Char. Как я могу заставить его принимать только целые значения. Когда я вхожу в int, он работает нормально, но когда я вхожу в Char или String, я получаю повторяющийся «Введите день открытия учетной записи: null». Я должен завершить программу, чтобы остановить ее.Как остановить пользователя от ввода строки в этом методе read()?
private void readDay(Scanner keyboardIn) {
boolean success = false;
while (!success) {
try {
System.out.print("Enter the day the account opened: ");
int d = keyboardIn.nextInt();
dateOpened.setDay(d);
success = true;
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
// Enter the month, checking for error
private void readMonth(Scanner keyboardIn) {
boolean success = false;
while (!success) {
{
try {
System.out.print("Enter the month the account opened: ");
int m = keyboardIn.nextInt();
dateOpened.setMonth(m);
success = true;
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}
// Enter the year, checking for error
private void readYear(Scanner keyboardIn) {
boolean success = false;
while (!success) {
try {
System.out.print("Enter the year the account opened: ");
int y = keyboardIn.nextInt();
dateOpened.setYear(y);
success = true;
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Может ли кто-нибудь объяснить нижний предел? –
Пробовал ли вы код, который вы написали, с нечисловым вводом? –
Это не работает, поскольку значение non-int не потребляется. – kgeorgiy