回答
你問在finally
塊,其中沒有一個try-catch塊模塊的輸入(array[i] = input.nextInt();
)。
它在try-catch完成後執行。
因此,它不會捕獲finally塊中發生的任何異常。
另外,在這裏:您要求在try-catch塊之外進行輸入,因此它沒有發現異常。
一個解決方案是將try-catch塊放在完整的代碼上,即在while循環之外。
好的感謝您的幫助,即時通訊新的Java非常不確定該怎麼做。我需要改變什麼? – PeteD
@PeteD不應該調用nextInt()和nextLine(),你應該只調用nextLine()。然後你必須檢查它是否是一個單詞,或者試圖將它解析爲數字('Integer.parseInt(...)')。 –
while(true) {
boolean status = true; //represents the status of the process
System.out.print("Enter the number of students that you wish to be part of the module register: ");
int numofstudents = input.nextInt();
try{
if (input.nextLine().equals("exit"))
{System.exit(0);}
status = true;
}catch (InputMismatchException IME){
/*3*/ System.out.println("\nNot a number or an integer!\n");
status = false;
continue;
}
finally{
if (status==false) {
String[] names = new String[numofstudents];
int[] array = new int[numofstudents];
for(int i = 0; i < numofstudents; i++) {
System.out.print("Enter the student's name: ");
names[i] = input.next();
System.out.print("Enter the student's module: ");
array[i] = input.nextInt();
}
selectionSort(names, array);
System.out.println(Arrays.toString(names));
System.out.println(Arrays.toString(array));
Scanner scan = new Scanner(System.in);
}
}}
事情終於被封鎖了會被稱爲即使沒有例外。 你還需要處理finally塊內的異常.bt我已經限制了每次在一個布爾值的幫助下調用finally塊。這是非常糟糕的編碼實踐,您可能需要用不同的方法替換整個代碼。
- 1. Clojure宏與嘗試,趕上
- 2. 嘗試趕上失敗與powershell和schtasks
- 3. 嘗試 - 趕上SQL
- 4. 嘗試{}趕上(){} C++
- 5. 建議嘗試趕上javascript
- 6. Java嘗試並趕上
- 7. Powershell嘗試趕上ExecuteNonQuery()
- 8. 嘗試...趕上...插入
- 9. 嘗試和趕不工作
- 10. 嘗試和趕上PHP應該在嘗試塊返回?
- 11. 的javascript - 如何嘗試趕上一個異步函數
- 12. 嘗試,趕上,如果與java和netbeans的組合框錯誤
- 13. 趕上一個加載器錯誤,並嘗試重新加載
- 14. 需要幫助修復一個嘗試,趕上錯誤
- 15. 如何解決wordpress登錄嘗試。我刪除了wp-login.php,仍然嘗試?
- 16. 嘗試,趕上doesent似乎工作
- 17. 嘗試趕上ExecutionTimeout不起作用
- 18. PHP的例外 - 嘗試/趕上必要?
- 19. C# - 嘗試/謂語表達趕上
- 20. 嘗試並彈出消息catch趕上
- 21. 傑克遜ObjectMapper在嘗試趕不上
- 22. 瞭解Java的嘗試/趕上
- 23. FileStream c#並嘗試並趕上
- 24. 爲什麼嘗試/趕上可拋棄?
- 25. MySQLi,PHP - 嘗試{...}趕上(...){....}不工作
- 26. Java中,嘗試...趕上init或運行
- 27. 嘗試,趕上處理不起作用
- 28. 嘗試趕不上工作在迅速
- 29. 嘗試/趕上,以避免.stackdump
- 30. 的Perl:嘗試::微小趕上
你在你的'try'塊之前調用'nextInt()'* ... –
*小技巧:嘗試使用適當的縮進來編寫漂亮的代碼* – Spidey
順便說一句,'finally'塊通常只用於用於關閉流或連接或類似的東西,而不是代碼的主要部分。另外,請注意,finally代碼塊中的代碼仍然會在catch中繼續運行。它將始終轉到最後在嘗試成功或失敗後,除非在極少數情況下(如System.exit等)。 –