Так же как и ответ Джеффа, нет никаких признаков того, что что-либо когда-либо будет устанавливать condition
обратно на true
после того, как один раз было установлено значение false. Вы можете сделать его локальной переменной или просто вернуться из блока try:
public int intInput(String text)
{
do
{
System.out.print(text);
try
{
return scanner.nextInt();
}
catch (java.util.InputMismatchException error)
{
System.out.println("Please use valid input.");
// Consume input here, appropriately...
}
} while (true);
}
Теперь этот метод не влияет ни на одно состояние, кроме сканера, что, вероятно, является тем, что вам нужно, и (IMO) также проще.