練習問題
8.5 練習問題
本章で習った内容を元に練習問題を解いてください。
問1 次の設問①~⑤について○か×で答えなさい。
設問
① 例外が発生すると必ずcatchブロックが処理される。
② 例外が発生していない場合でも、必ずfinallyブロック内の処理は実行される。
③ catchブロックは複数設定できるので、catchブロックに指定する例外クラスの並びは特に気にする必要はない。
④ catchの「()」括弧内に指定した変数名を利用すると、例外の詳細な情報を取得できる。
⑤ 例外処理を組み込むとソースコードが煩雑になるので、どんな例外も絶対に処理する必要はない。
問2 以下に示すソースコードを実行した結果として正しいものを答えなさい。
選択肢
① Redのみ画面に表示される。
② Red、Blue、Yellow、Pink、Black全て表示される。
③ Red、Blue、Pink、Blackが表示される。
④ Yellowのみ画面に表示される。
⑤ Red、Blue、Yellow、Pinkが表示される。
⑥ Blackのみ画面に表示される。
ソースコード
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch08exercise
③ 名前: Color
④ 作成するメソッド・スタブの選択: public static void main(String[] args) にチェックを入れる
1 | package jp.co.f1.basic.ch08exercise; |
4 | public static void main(String[] args) { |
5 | System.out.println( "Red" ); |
8 | int [] array = new int [ 2 ]; |
10 | System.out.println( "Blue" ); |
14 | System.out.println( "Yellow" ); |
16 | } catch (Exception e) { |
17 | System.out.println( "Pink" ); |
19 | System.out.println( "Black" ); |
問3 以下に示すSample.javaのソースコードを実行した場合、発生する可能性のある選択肢の例外を○か×で答えなさい。
選択肢
① ファイル入出力エラー(IOexception)
② 0除算エラー(ArithmeticException)
③ 配列エラー(ArrayIndexOutOfBoundsException)
④ 型変換エラー(NumberFormatException)
⑤ キーボード入力値のエラー(InputMismatchException)
ソースコード
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch08exercise
③ 名前: Sample
④ 作成するメソッド・スタブの選択: public static void main(String[] args) にチェックを入れる
1 | package jp.co.f1.basic.ch08exercise; |
6 | public static void main(String[] args) { |
10 | int [] num = new int [ 3 ]; |
12 | Scanner sin = new Scanner(System.in); |
17 | System.out.print( "数値を入力して下さい。(999で強制終了)>" ); |
18 | int tmpNum = sin.nextInt(); |
29 | for ( int i = 0 ; i < cnt; i++) { |
37 | System.out.println( "入力数は" + cnt + "です。" ); |
38 | System.out.println( "合計点は" + sum + "です。" ); |
39 | System.out.println( "平均点は" + ave + "です。" ); |
問4 問3のSample.javaを実行して、キーボードから整数文字以外を入力すると例外が発生します。整数文字以外が入力された際には、以下の実行結果になるPractice0801.javaを作成しなさい。作成する場合はSample.javaのソースコードを利用し、変更仕様に従って下さい。
ソースコード
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch08exercise
③ 名前: Practice0801
④ 作成するメソッド・スタブの選択: public static void main(String[] args) にチェックを入れる
実行結果(Sample.java)
変更仕様
- 繰り返し処理内に例外処理(try~catch)を追加し、再度キーボード入力を行えるようにする。
- tryブロック内に含める処理は、whileブロック内全ての処理を含める。
- catchする例外はInputMismatchExceptionを指定する。
- catchブロック内の処理は、以下のメッセージを画面に出力し、入力バッファのクリアを行う。
①「文字が入力されました。整数を入力して下さい。」
②入力バッファのクリア(sin.next();)
※例外が発生した場合、バッファのクリアを行わないと次のキーボード入力が行えない。
実行結果(Practice0801.java)
作成ポイント
問5 問4でキーボード入力値に関する例外は処理しましたが、それ以外にも以下に示す例外が発生します。
- 1人も入力せずに終了した場合:0除算の例外
- 4回以上入力した場合:最大配列要素数越えの例外
上記を対処するあらゆる例外を処理するような例外処理を組み込んだPractice0802.javaを作成しなさい。
問4で作成したソースコードを利用し、変更仕様に従って作成して下さい。
ソースコード
① ソース・フォルダー: myproj_basic/src
② パッケージ: jp.co.f1.basic.ch08exercise
③ 名前: Practice0802
④ 作成するメソッド・スタブの選択: public static void main(String[] args) にチェックを入れる
実行結果
・1人も入力せずに終了した場合

・4回以上入力した場合

変更仕様
作成ポイント
1 | package jp.co.f1.basic.ch08exercise; |
6 | public static void main(String[] args) { |
next>> 8.6 練習問題 解答