題目描述

Java程式語言內建處理例外的結構,使用try敘述就可以針對區塊內發生的錯誤進行測試,再用catch區塊來針對測試出來的錯誤進行處理。



這個題目將會測驗您對try-catch區塊的認知。

您將會得到兩個整數,x和y作為輸入。您必須計算x/y的結果。如果x和y不是32位元的有號整數,或是當y是0的話,例外將會發生,而您必須要抓出這些例外。

原題網址

https://www.hackerrank.com/challenges/java-exception-handling-try-catch

範例輸入1

10
3

範例輸出1

3

範例輸入2

10
Hello

範例輸出2

java.util.InputMismatchException

範例輸入3

10
0

範例輸出3

java.lang.ArithmeticException: / by zero

範例輸入4

23.323
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");
        }
    }
}