java try意义_关于java:try and catch不起作用

我的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){...}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值