gpt4 book ai didi

Java 异常(java.util.InputMismatchException)

转载 作者:太空宇宙 更新时间:2023-11-04 13:01:37 24 4
gpt4 key购买 nike


我定义了一个函数readInt(),它返回一个int(基于Scanner.nextInt())。

问题是:如果我输入一个字符,我会收到此异常:(java.util.InputMismatchException)。

我尝试使用 try-catch block 修复它,但没有成功。

出了什么问题?

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);
}
}

现在它可以工作了。这是一个好方法还是一个肮脏的黑客?

最佳答案

我相信您误解了错误的来源。您的 try/catch 似乎捕获了越界错误(例如,太大而无法成为 int 或太小),但是忽略了 Scanner.nextInt() ,我认为这是错误所在。尝试将其放入像这样的 try/catch 中并进行操作,直到获得正确的结果。

displayBlack(message);
try {
int number = scanner.nextInt();
} catch(Exception e) { //Just using this as a catch all - you might want to be more specific.
...

关于Java 异常(java.util.InputMismatchException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34883511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com