Java異常(java.util.InputMismatchException)
我定義的函數readInt()
返回一個int
(基於Scanner.nextInt()
)。
問題是:如果我輸入一個字符,我會得到這個異常:(java.util.InputMismatchException
)。
我試圖用try-catch
塊試圖解決它沒有成功。
怎麼了?
public static int readInt(String message, int min, int max)
{
displayBlack(message);
int number = scanner.nextInt();
try{
if (number < min || number > max)
{
return readInt("Erreur, Selectionner un nombre entre " + min + " et " + max, min, max);
} else
{
return number;
}
}
catch (NumberFormatException e){
return readInt(message, min, max);
}
}
編輯:
我改變了我的功能:
public static int readInt(String message, int min, int max)
{
displayBlack(message);
try{
String result = scanner.next();
int number = Integer.parseInt(result);
if (number < min || number > max)
{
return readInt("Erreur, Selectionner un nombre entre " + min + " et " + max, min, max);
} else
{
return number;
}
}
catch (Exception e){
return readInt("Erreur, Selectionner un nombre entre " + min + " et " + max, min, max);
}
}
現在,它的工作。這是一個好方法還是一個骯髒的黑客?
你看過'hasNextInt'嗎?目前還不清楚你希望返回readInt(「Erreur,...」)做什麼...... –
你也應該處理InputMismatchException –
如果你用這種方式捕獲異常,你只會遞歸捕獲無限的異常,直到你會遇到堆棧溢出。至少,您需要更改輸入,以便對該方法的連續調用不會造成導致異常的完全相同的事情。 –