好的,这是我的问题。我们的老师希望我们创建一个程序,创建一个斐波那契数列,然后用户可以使用数组数组(例如在索引处获取数字)进行操作。我想要超越,并且可以防止白痴。我问她的try/catch语句,但她说,这是不是在curriculum.So,我做了研究,取得这样的代码:在try/catch语句中发生错误
while(valid) {
try {
lengthOfSequence = keyboard.nextInt();
} catch (Exception e) {
out.println("You entered an " + e + ". Please enter a number between 1 and " + maxLength);
throw e;
}
}
(有效真的开始),因此,代码应该得到用户输入的整数。然后取该整数并将其分配给lengthOfSequence。正确运行它(输入一个整数)将允许代码正确运行,但是当我为我的输入插入“o”(或任何其他字符串)时,捕获不会捕获异常,并且出现此错误:
java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at FibonacciRunner.main(FibonacciRunner.java:28)
我试过很多方法可以尝试修复它包括:lengthOfSequence = Integer.parseInt(keyboard.nextLine());
,给了我
java.lang.NumberFormatException: For input string: "o"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at FibonacciRunner.main(FibonacciRunner.java:29)
我也尝试命名异常InputMismatchException
和NumberFormatException
但我仍然得到一个错误。
我在编码和Stack Overflow的新手,所以预先感谢您的帮助
编辑: 我曾试图消除throw e
但这一切的确是创建代码输出的死循环“你输入了一个java.util.InputMismatchException,请输入1到101之间的数字”。
此外,我除去这从try语句,因为我认为这将不会涉及到这个问题
if(lengthOfSequence > 1 && lengthOfSequence < maxLength) {
fibonacci.createSequence(lengthOfSequence);
valid = false;
}
你觉得'扔e;'做什么?你为什么这么认为? –
您正在捕捉异常。但是你正在抛出另一个异常。删除'扔e',让我们知道会发生什么 – jiaweizhang
你正在捕捉异常,但扔回去。您得到NumberFormatException的原因是因为您尝试将非整数值解析为整数和InputMismatchException,因为nextInt()需要整数,但获取非整数值。在发现异常之后,你希望做什么? – Raf