019-006-001
例外処理戦略:料理タイマー検証
初級
問題説明
例外処理戦略:料理タイマー検証
学習目標: 状況に応じて適切な例外を使い分ける方法を理解する
この問題では: 料理タイマーの最大時間と設定時間を標準入力から読み取り、IllegalArgumentException(負の値などの不正な引数)とIllegalStateException(最大時間超過などのシステム制限違反)を適切に使い分けて検証し、結果を標準出力に表示するプログラムを作成します。
料理タイマーの設定を検証するシステムを作成します。負の時間などの入力値エラーにはIllegalArgumentExceptionを、最大時間を超えるなどの制限エラーにはIllegalStateExceptionを使い分けます。適切な例外を選択することで、エラーの種類を明確に伝え、呼び出し側が適切な対処をしやすくなります。
例1:正常なタイマー設定(最大: 60分, 設定: 30分)
最大60分のタイマーに30分を設定する正常なケースです。両方の検証(引数検証・上限確認)を通過し、成功メッセージが表示されます。
入力:
60
30
出力:
=== Cooking Timer Validator ===
Max Time: 60 min
Set Time: 30 min
Validation: Success
━━━━━━━━━━━━━━━━
Status: Timer setting is valid
```java
### 例2:入力値エラー(最大: 60分, 設定: -10分)
負の設定時間は引数として無効です。validateSetTime()<a href="https://javadrill.tech/problems/008">メソッド</a>でIllegalArgumentExceptionがスローされ、引数エラーとして処理されます。これは「引数の問題」であることを明確に示します。
```java
入力:
60
-10
出力:
=== Cooking Timer Validator ===
Max Time: 60 min
Set Time: -10 min
Validation: Failed
━━━━━━━━━━━━━━━━
Error Type: IllegalArgumentException
Message: Set time must be positive
```java
### 例3:上限超過エラー(最大: 30分, 設定: 60分)
設定時間自体は有効(正の値)ですが、最大時間を超過しています。checkMaxTime()メソッドでIllegalStateExceptionがスローされ、状態エラーとして処理されます。これは「システムの制限の問題」であることを明確に示します。
```java
入力:
30
60
出力:
=== Cooking Timer Validator ===
Max Time: 30 min
Set Time: 60 min
Validation: Failed
━━━━━━━━━━━━━━━━
Error Type: IllegalStateException
Message: Exceeds max time (set: 60, max: 30)
```java
## 入力
1行目: タイマーの最大時間(分)
2行目: 設定する時間(分)
## 出力
正常時:
```java
=== Cooking Timer Validator ===
Max Time: [最大時間] min
Set Time: [設定時間] min
Validation: Success
━━━━━━━━━━━━━━━━
Status: Timer setting is valid
```java
入力値エラー時:
```java
=== Cooking Timer Validator ===
Max Time: [最大時間] min
Set Time: [設定時間] min
Validation: Failed
━━━━━━━━━━━━━━━━
Error Type: IllegalArgumentException
Message: [エラーメッセージ]
```java
上限超過時:
```java
=== Cooking Timer Validator ===
Max Time: [最大時間] min
Set Time: [設定時間] min
Validation: Failed
━━━━━━━━━━━━━━━━
Error Type: IllegalStateException
Message: [エラーメッセージ]
テストケース例
※ 出力例はプログラミングの国際標準に準拠し英語で表示しています
正常系
入力:
90 45
期待される出力:
=== Cooking Timer Validator === Max Time: 90 min Set Time: 45 min Validation: Success ━━━━━━━━━━━━━━━━ Status: Timer setting is valid
正常系
入力:
20 45
期待される出力:
=== Cooking Timer Validator === Max Time: 20 min Set Time: 45 min Validation: Failed ━━━━━━━━━━━━━━━━ Error Type: IllegalStateException Message: Exceeds max time (set: 45, max: 20)
あなたの解答
現在のモード:● 自分のコード
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 回実行可能
