Max*_*xpm 5 java exception input infinite-loop java.util.scanner
Scanner scanner = new Scanner();
int number = 1;
do
{
try
{
option = scanner.nextInt();
}
catch (InputMismatchException exception)
{
System.out.println("Integers only, please.");
}
}
while (number != 0);
Run Code Online (Sandbox Code Playgroud)
尽管存在异常处理,但在给出非整数输入时,此代码将进入无限循环.它不是Scanner
暂停在下一次迭代中收集输入,而是继续抛出InputMismatchException
s直到程序被杀死.
扫描整数(或其他类型,我猜)输入,丢弃无效输入并正常继续循环的最佳方法是什么?
将您的代码更改为此
catch (InputMismatchException exception)
{
System.out.println("Integers only, please.");
scanner.nextLine();
}
Run Code Online (Sandbox Code Playgroud)
在尝试将输入的值分配给int之前,应检查输入是否可以解析为int。您不应使用异常来确定输入是否正确,这是错误的做法,应避免使用。
if(scanner.hasNextInt()){
option = scanner.nextInt();
}else{
System.out.printLn("your message");
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以检查输入是否可以解释为int,如果可以,则分配值,如果不能,则显示消息。调用该方法不会使扫描仪前进。
归档时间: |
|
查看次数: |
21412 次 |
最近记录: |