| この問題を解くためには… |
| → 応用編第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
期待される実行結果
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.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)
期待される実行結果の例
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









