我的try / catch语句有问题。我知道它可能是一个简单的解决方案,但我是java的新手。 在这里,我希望控制台提示用户添加他们的初始存款,例如,如果我输入类似" hello"程序会崩溃而不是再问一次?感谢
以下是我收到的错误: 线程" main"中的例外情况java.util.InputMismatchException 在
java.util.Scanner.throwFor(未知来源)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
if(result=="DELETE")
{
var idx = $scope.ddUsers.indexOf(user);
if(idx > -1 ){// make sure can index this object
$scope.ddUsers.splice(idx, 1);
$scope.showSimpleToast('Successfully deleted ' + user.user.name);
else{
// Ooops ... can't find it
}
}
答案 0 :(得分:2)
根据docs
方法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();
}
}
console:
Please enter an initial deposit:
55
55
Process finished with exit code 0
答案 1 :(得分:1)
你没有得到你抓到的例外。相反,您将获得InputMismatchException。
由于您尝试在catch语句中再次获取输入,因此您必须再次提供无效输入。但那么谁正在捕捉这个例外?没有人。因此,您的程序将退出。此外,我没有看到超出该行的任何代码。因此,它也可能是一个正常的退出。
答案 2 :(得分:0)
缺少第一个括号。我认为在println之后(“Invalid Input”);。
如果仍然无法正常工作,请尝试捕获各种错误
catch(Exeption e){...}