題目描述
Java程式語言內建處理例外的結構,使用try敘述就可以針對區塊內發生的錯誤進行測試,再用catch區塊來針對測試出來的錯誤進行處理。
這個題目將會測驗您對try-catch區塊的認知。
您將會得到兩個整數,x和y作為輸入。您必須計算x/y的結果。如果x和y不是32位元的有號整數,或是當y是0的話,例外將會發生,而您必須要抓出這些例外。
原題網址
範例輸入1
10
3
3
範例輸出1
3
範例輸入2
10
Hello
Hello
範例輸出2
java.util.InputMismatchException
範例輸入3
10
0
0
範例輸出3
java.lang.ArithmeticException: / by zero
範例輸入4
23.323
0
0
範例輸出4
java.util.InputMismatchException
解題概念
利用Integer類別的parseInt方法來嘗試將輸入的字串轉成整數,如果字串無法轉換成整數就會拋出InputMismatchException或NumberFormatException例外。若是整數型態的除法運算發生除以0的情況,程式會拋出ArithmeticException例外。利用try-catch結構來分開處理這些例外即可。
參考答案
import java.util.InputMismatchException;
import java.util.Scanner;
public class Solution {
public static void main(final String[] args) {
final Scanner sc = new Scanner(System.in);
final String aText = sc.nextLine();
final String bText = sc.nextLine();
int a, b;
try {
a = Integer.parseInt(aText);
b = Integer.parseInt(bText);
System.out.println(a / b);
} catch (final InputMismatchException | NumberFormatException ex) {
System.out.println("java.util.InputMismatchException");
} catch (final ArithmeticException ex) {
System.out.println("java.lang.ArithmeticException: / by zero");
}
}
}