019-004-002
例外の伝播:レシピ検証システム
初級
問題説明
例外の伝播:レシピ検証システム
この問題では: 調理時間の入力値を検証し、正常値の場合はレシピ準備完了メッセージを、負の値の場合はメソッド間を自動伝播した例外のエラーメッセージを標準出力に表示するプログラムを作成します。
学習目標: 例外がメソッド呼び出しを通じて伝播する仕組みを理解する
レシピの調理時間を検証するシステムを作成します。調理時間が負の値の場合、validateCookingTime()メソッドでIllegalArgumentExceptionをスローし、その例外がprepareRecipe()メソッドを経由してmain()メソッドまで伝播する様子を学びます。例外を明示的に再スローしなくても、自動的に呼び出し元に伝播します。
例1:正常な調理時間(30分)
入力データとして調理時間30分を与えた場合、validateCookingTime()での検証が成功し、prepareRecipe()を経由してmain()まで正常に処理が進みます。
入力: 30
出力:
=== Recipe Validation ===
Cooking Time: 30分
Validation: Success
━━━━━━━━━━━━━━━━
Status: Recipe prepared
```java
### 例2:負の調理時間(-10分)
入力データとして調理時間-10分を与えた場合、validateCookingTime()でIllegalArgumentExceptionがスローされます。この例外はprepareRecipe()を通過してmain()のcatchブロックで捕捉され、エラーメッセージが表示されます。prepareRecipe()では例外を明示的に処理していませんが、自動的に上位のmain()まで伝播します。
```java
入力: -10
出力:
=== Recipe Validation ===
Cooking Time: -10分
Validation: Failed
━━━━━━━━━━━━━━━━
Error: Cooking time must be positive
```java
### 例3:境界値(0分)
入力データとして調理時間0分を与えた場合、負の値ではないため検証が成功します。調理時間0分は「即席で準備不要」を意味する特殊なケースとして有効です。
```java
入力: 0
出力:
=== Recipe Validation ===
Cooking Time: 0分
Validation: Success
━━━━━━━━━━━━━━━━
Status: Recipe prepared
```java
## 入力
1行目: 調理時間(分)
## 出力
```java
=== Recipe Validation ===
Cooking Time: [時間]分
Validation: Success
━━━━━━━━━━━━━━━━
Status: Recipe prepared
```java
または例外発生時:
```java
=== Recipe Validation ===
Cooking Time: [時間]分
Validation: Failed
━━━━━━━━━━━━━━━━
Error: Cooking time must be positive
テストケース例
※ 出力例はプログラミングの国際標準に準拠し英語で表示しています
正常系
入力:
30
期待される出力:
=== Recipe Validation === Cooking Time: 30 minutes Validation: Success ━━━━━━━━━━━━━━━━ Status: Recipe prepared
正常系
入力:
-10
期待される出力:
=== Recipe Validation === Cooking Time: -10 minutes Validation: Failed ━━━━━━━━━━━━━━━━ Error: Cooking time must be positive
あなたの解答
現在のモード:● 自分のコード
99
1
2
3
4
5
6
7
8
9
10
›
⌄
⌄
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// ここにコードを書いてください
sc.close();
}
}
0 B / 5 MB
残り 10 回実行可能
