我的try / catch语句有问题。 我知道这可能很容易解决,但是我是Java新手。
在这里,我希望控制台提示用户添加其初始存款,例如,如果我输入类似" hello"的内容,程序将崩溃而不是再次询问? 谢谢
这是我收到的错误:
线程"主"中的异常java.util.InputMismatchException
在
java.util.Scanner.throwFor(未知源)
在java.util.Scanner.next(未知源)
在java.util.Scanner.nextInt(未知来源)
在java.util.Scanner.nextInt(未知来源)
System.out.println("Please enter an initial deposit:");
try{
deposit.add(keyboard.nextInt());
}catch(NumberFormatException e){
System.out.println("Invalid input");
System.out.println("Please enter an account number:");
accountNumber.add(keyboard.nextDouble());
缺少右括号? catch(NumberFormatException e){ System.out.println("Invalid input");} *...* System.out.println("Please enter an account number:");
您有任何错误吗? 如果是,那是什么?
您检查了什么异常吗? 例如,如果在线程"主" java.util.InputMismatchException中获得异常,则无法使用NumberFormatException进行捕获?
您需要添加显式代码来要求用户重试吗?
线程"主"中的异常java.util.Scanner.throwFor(未知源)处的java.util.Scanner.next(未知源)处的java.util.Scanner.nextInt(未知源)处的java.util.InputMismatchException。 util.Scanner.nextInt(未知来源)
@ HelpMe-ICantJava:您应该将此信息"编辑"到问题中,因为在长度注释列表中很容易错过它,并不是每个人都希望阅读。
根据文档
方法nextInt引发InputMismatchException而不是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
这一点改善了它。 它实际上显示"输入无效",但是继续"请输入一个帐号",然后由于线程异常而崩溃
我扩展了答案,希望它能帮助您调试代码
您没有收到所捕获的异常。 相反,您将获得InputMismatchException。
由于您试图在catch语句中再次获取输入,因此必须在此处再次提供无效输入。 但是,谁在捕捉这个例外呢? 没有人。 因此,您的程序将退出。 另外,在那行之后,我看不到任何代码。 因此,这也可能是正常的退出。
第一个括号缺失。 我想在println(" Invalid Input");之后。
如果仍然无法正常工作,请尝试捕获各种错误
catch(Exeption e){...}