この問題を解くためには…
 → 応用編第7日目参照

問題7:例外処理

prob7-1.(難易度:★)

以下のプログラムは、実行時に例外が発生する。このプログラムにtry~catchを使って、適切な例外処理をつけて、期待する実行結果を得られるようにプログラムを変更しなさい。

probex7-1:Airplane.java
package problemex7;

public class Problemex7_1 {

	public static void main(String[] args) {
		int a[] = { 0 , 1, 2 };
		//	配列の内容を表示
		for(int i = 0; i < 4; i++){
			System.out.println("a[" + i +"]=" + a[i]);
		}

	}

}
実行結果
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at problemex7.Problemex7_1.main(Problemex7_1.java:8)
a[0]=0
a[1]=1
a[2]=2
期待される実行結果
a[0]=0
a[1]=1
a[2]=2
配列の範囲を超えています。

prob7-2.(難易度:★)

以下のプログラムは、実行時に例外が発生する。このプログラムにtry~catchを使って、適切な例外処理をつけて、期待する実行結果を得られるようにプログラムを変更しなさい。

probex7-2:Problemex7_2.java
package problemex7;

public class Problemex7_2 {

	public static void main(String[] args) {
		for(int i = 0; i < 3 ; i++){
			for(int j = 0; j < 3; j++){
				System.out.print(i + "/ " + j + " = " + i/j + " ");
			}
			System.out.println();
		}
	}
}
実行結果
Exception in thread "main" java.lang.ArithmeticException: / by zero
    at problemex7.Problemex7_2.main(Problemex7_2.java:8)
期待される実行結果の例
0で割り算はできません。
0/ 1 = 0 0/ 2 = 0
0で割り算はできません。
1/ 1 = 1 1/ 2 = 0
0で割り算はできません。
2/ 1 = 2 2/ 2 = 1