Java 设法抓住不起作用的人

Java 设法抓住不起作用的人,java,try-catch,Java,Try Catch,我的try/catch语句有问题。我知道这可能是一个很容易解决的问题,但我对java还是新手。 在这里,我希望控制台提示用户添加他们的初始存款,例如,如果我输入类似“hello”的内容,程序将崩溃,而不是再次询问?谢谢 以下是我收到的错误: 线程“main”java.util.InputMismatchException中出现异常 在 java.util.Scanner.throwFor(未知源) 位于java.util.Scanner.next(未知源) 位于java.util.Scanner

我的try/catch语句有问题。我知道这可能是一个很容易解决的问题,但我对java还是新手。 在这里,我希望控制台提示用户添加他们的初始存款,例如,如果我输入类似“hello”的内容,程序将崩溃,而不是再次询问?谢谢

以下是我收到的错误: 线程“main”java.util.InputMismatchException中出现异常 在

java.util.Scanner.throwFor(未知源)

位于java.util.Scanner.next(未知源)

位于java.util.Scanner.nextInt(未知源)

位于java.util.Scanner.nextInt(未知源)

方法nextInt抛出输入不匹配异常非NumberFormatException

写:

catch(InputMismatchException e){
       ....
更新: 我用这个代码段输入数字

public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);

    System.out.println("Please enter an initial deposit:");

    try {
        int numberEntered = keyboard.nextInt();
        System.out.println(numberEntered);

    } catch (InputMismatchException e) {

        System.out.println("Invalid input");

        System.out.println("Please enter an account number:");
    } finally {
        keyboard.close();
    }
}
控制台:

Please enter an initial deposit:
55
55

Process finished with exit code 0
  • 您不会得到您捕获的异常。相反,您得到的是输入不匹配异常

  • 因为您试图在catch语句中再次获取输入,所以必须再次提供无效的输入。但是,谁在抓住这个例外呢?没有人因此,您的程序将退出。此外,我没有看到任何代码超出这一行。因此,这也可能是一个正常的出口


  • 第一个括号缺失。我认为在println(“无效输入”)之后

    如果它仍然不工作,尝试捕捉各种错误
    catch(Exeption e){…}

    缺少结束括号<代码>catch(NumberFormatException e){System.out.println(“无效输入”);}/*…*/System.out.println(“请输入账号:”)您是否收到任何错误?如果是,它们是什么?您是否检查了您得到的异常情况?例如,如果您在线程“main”java.util.InputMismatchException中获得异常,那么您无法在java.util.Scanner.throwFor(未知源)java.util.Scanner.nextInt(未知源)java.util.Scanner.next(未知源)处使用NumberFormatException?线程“main”java.util.InputMismatchException中的异常捕获在java.util.Scanner.nextInt(未知源代码)@HelpMe ICantJava:您应该将此信息“编辑”到问题中,因为它很容易在长度注释列表中丢失,不是每个人都想通读的。这稍微改进了一点。它实际上显示“无效输入”,但是,继续“请输入帐号”,然后崩溃为“线程中的异常”。我扩展了答案,希望它能帮助您调试代码
    Please enter an initial deposit:
    55
    55
    
    Process finished with exit code 0