好的,這是我的問題。我們的老師希望我們創建一個程序,創建一個斐波那契數列,然後用戶可以使用數組數組(例如在索引處獲取數字)進行操作。我想要超越,並且可以防止白癡。我問她的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