java - 捕获异常时无法继续循环

标签 java exception-handling while-loop

如果提供了无效费率(意思是包括字母),我将尝试继续提示用户输入有效费率。问题是,如果我输入字母而不是数字,那么我会不断收到 "Payrate must be > 0" 消息;但是,如果我输入 0 或负数,系统会按预期提示我。

我做错了什么,我该如何解决?

while (payrate <= 0) {
    try {
        System.out.print("Enter payrate: "); //ask for payrate
        payrate = input.nextFloat();  //store input from console
    } catch (Exception InputMismatchException) {
        System.out.println("Payrate must be > 0.");
        payrate = 0;
    }
}

最佳答案

您可以在异常中使用 input.next(),因为 .nextFloat() 不会清除无效值。

关于java - 捕获异常时无法继续循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21052145/

相关文章:

java - 我们如何找出 while 循环持续的次数

java - 如何从 PHP 调用 jar 文件?

java - 当 try 使用 finally 而不是 catch 时异常会发生什么以及它如何处理?

java - 尝试对要显示在表行中的数组进行排序

react-native - React Native - 在调用 multiSet 时抛出异常 '-[NSNull length]: unrecognized selector sent to instance 0x1e6c059b0'

asp.net-core - 如何添加HttpContext丰富未处理的异常日志?

c - 为什么 scanf 在这里跳过输入?

通过读取字符转换为负整数

java - Tomcat:显示Web应用程序的维护页面

java - 使用tomcat时如何将文件保存在客户端电脑而不是服务器电脑上