019-003-009

入力パーサーの複数例外処理

上級

問題説明

入力パーサーの複数例外処理

この問題では: ユーザー入力文字列を異なる型に変換する InputParser クラスを作成し、parseAndProcess(String input) メソッドで発生しうる NumberFormatExceptionArrayIndexOutOfBoundsExceptionIllegalArgumentException をマルチキャッチで処理するプログラムを作成します。

学習目標: 複数の例外処理をマルチキャッチ構文で効率的に捕捉し、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つの入力パターンをテストする:
    1. 正常な入力: "10,20,30:1" → 値の表示
    2. 数値変換エラー: "10,abc,30:1" → NumberFormatException の捕捉
    3. インデックス範囲外: "10,20,30:5" → ArrayIndexOutOfBoundsException の捕捉
    4. 不正な入力: "" → 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

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方

新規登録