gpt4 book ai didi

java - 扫描仪在循环 try/catch 中失败

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

我想读取用户选择和输入的整数值,但不希望如果用户犯了错误并输入了不可读的值,则异常会导致程序崩溃。为此,我编写了一个包含 try/catch 序列的 while 循环,该序列旨在在输入无效的情况下返回一条简短的语句,解释用户的错误并提示重试。

当我使用此代码运行程序时,虽然我用来读取用户输入的 Scanner 对象在循环的第一遍中似乎工作正常,但在后续遍中,try 语句会自动失败,而不等待新的输入,这自然会导致一系列无休止的错误消息和提示。

这是我的代码:

        Scanner tScan = new Scanner(System.in);
int gChoice = 0;
boolean gValid = false;
while (!gValid)
{
try{
gChoice += tScan.nextInt();
gValid =true;
} catch(Exception e){
System.out.println("Input rejected. Please try again:");
}
}

程序暂停于 gChoice += tScan.nextInt();仅当用户输入一些数据并且 tScan 尝试从中获取整数时才会继续。如果找不到整数,则继续执行 catch 语句,返回到循环的开头,注意到 gValid 仍然不为 true,进入 try 语句,读取行 gChoice += tScan.nextInt();但不会暂停等待用户输入,无法从 tScan 为 gChoice 分配一个整数,继续执行 catch 语句等等。

如果您对我可能做错了什么或如何避免此问题提出建议,我将不胜感激。

编辑:现在已解决,感谢 Greg。

最佳答案

您需要清除扫描仪中的错误输入。尝试将 tScan.next(); 添加到 catch block 。

关于java - 扫描仪在循环 try/catch 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19148121/

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