Ada*_*one 1 java try-catch infinite-loop
我正在编写一个简单的 java 控制台游戏。我使用扫描仪读取来自控制台的输入。我试图验证我是否要求输入一个整数,如果输入字母,我不会收到错误。我试过这个:
boolean validResponce = false;
int choice = 0;
while (!validResponce)
{
try
{
choice = stdin.nextInt();
validResponce = true;
}
catch (java.util.InputMismatchException ex)
{
System.out.println("I did not understand what you said. Try again: ");
}
}
Run Code Online (Sandbox Code Playgroud)
但它似乎创建了一个无限循环,只是打印出 catch 块。我究竟做错了什么。
是的,我是 Java 新手
nextInt()不会丢弃不匹配的输出;程序会尝试一遍又一遍地读取它,但每次都会失败。在调用之前使用该hasNextInt()方法确定是否有int可用的内容可供读取 nextInt()。
确保当您发现除InputStream整数之外的其他内容时,您可以将其清除,nextLine()因为hasNextInt()也不会丢弃输入,它只是测试输入流中的下一个标记。
| 归档时间: |
|
| 查看次数: |
1791 次 |
| 最近记录: |