019-003-009
入力パーサーの複数例外処理
上級
問題説明
入力パーサーの複数例外処理
この問題では: ユーザー入力文字列を異なる型に変換する InputParser クラスを作成し、parseAndProcess(String input) メソッドで発生しうる NumberFormatException、ArrayIndexOutOfBoundsException、IllegalArgumentException をマルチキャッチで処理するプログラムを作成します。
学習目標: 複数の例外処理をマルチキャッチ構文で効率的に捕捉し、catchブロックの順序が実行結果に与える影響を理解する
概要
InputParser クラスは、カンマ区切りの入力文字列を解析し、指定されたインデックスの要素を整数に変換して処理します。入力が不正な場合、適切な例外がスローされます。
仕様
InputParser クラス (InputParser.java)
parseAndProcess(String input)メソッドを定義する- 引数: カンマ区切りの文字列(形式:
"値1,値2,値3,...:インデックス") - コロン(
:)で文字列を分割し、前半を値の配列、後半をインデックスとして解釈する - 入力が
nullまたは空文字列の場合、IllegalArgumentExceptionをスローする(メッセージ:"Input must not be null or empty") - コロンが含まれない場合、
IllegalArgumentExceptionをスローする(メッセージ:"Input must contain ':' separator") - インデックス部分が整数に変換できない場合、
NumberFormatExceptionが発生する - インデックスが配列範囲外の場合、
ArrayIndexOutOfBoundsExceptionが発生する - 正常な場合、指定インデックスの値を整数に変換して
"Parsed value: 数値"を返す
- 引数: カンマ区切りの文字列(形式:
Main クラス (Main.java)
- 4つの入力パターンをテストする:
- 正常な入力:
"10,20,30:1"→ 値の表示 - 数値変換エラー:
"10,abc,30:1"→ NumberFormatException の捕捉 - インデックス範囲外:
"10,20,30:5"→ ArrayIndexOutOfBoundsException の捕捉 - 不正な入力:
""→ IllegalArgumentException の捕捉
- 正常な入力:
- 各テストでtry-catchを使用し、マルチキャッチ(
NumberFormatException | ArrayIndexOutOfBoundsException)とcatch順序を実装する
出力形式
--- Test 1: Valid input ---
Result: Parsed value: 20
--- Test 2: Number format error ---
Caught NumberFormatException | ArrayIndexOutOfBoundsException: For input string: "abc"
--- Test 3: Index out of bounds ---
Caught NumberFormatException | ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 3
--- Test 4: Invalid input ---
Caught IllegalArgumentException: Input must not be null or empty
