この問題を解くためには… |
→ 応用編第7日目参照 |
---|
問題7:例外処理
prob7-1.(難易度:★)
以下のプログラムは、実行時に例外が発生する。このプログラムにtry~catchを使って、適切な例外処理をつけて、期待する実行結果を得られるようにプログラムを変更しなさい。
probex7-1:Airplane.javapackage 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
期待される実行結果
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
配列の範囲を超えています。
a[1]=1
a[2]=2
配列の範囲を超えています。
prob7-2.(難易度:★)
以下のプログラムは、実行時に例外が発生する。このプログラムにtry~catchを使って、適切な例外処理をつけて、期待する実行結果を得られるようにプログラムを変更しなさい。
probex7-2:Problemex7_2.javapackage 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)
期待される実行結果の例
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
0/ 1 = 0 0/ 2 = 0
0で割り算はできません。
1/ 1 = 1 1/ 2 = 0
0で割り算はできません。
2/ 1 = 2 2/ 2 = 1