■概要
コンソールに年齢を入力し、入力した値をコンソールに表示する処理を作成する。
年齢判定判定処理は以下の通り。
- 入力値が整数以外の場合は例外エラーとする。
- 入力値がマイナスの場合、例外エラーとする。
■ディレクトリ構成
Javaソースのディレクトリ構成は以下の通りとする。
OriginalException(プロジェクト名)
├── bin
│ ├── exception
│ │ └── InvalidAgeException.class
│ └── main
│ └── AgeJudgmentMain.class
└── src
├── exception
│ └── InvalidAgeException.java
└── main
└── AgeJudgmentMain.java
■フローチャート
「AgeJudgmentMain.java」の処理フローを以下に示す。
■サンプルコード
「InvalidAgeException.java」および「AgeJudgmentMain.java」のコードを以下に示す。
・InvalidAgeException.java
package exception;
/*
* 年齢判定例外クラス
*/
public class InvalidAgeException extends Exception{
// 警告を回避するための宣言
private static final long serialVersionUID = 1L;
// コンストラクタ
public InvalidAgeException(String exception_message, String input_data){
// Exceptionクラスのコンストラクタ呼び出し
super(exception_message + "入力値:" + input_data);
}
}
・AgeJudgmentMain.java
package main;
import java.util.Scanner;
import exception.InvalidAgeException;
/*
* 年齢判定メインクラス
*/
public class AgeJudgmentMain {
public static void main(String[] args) {
int age; // 年齢初期値
// 入力値の設定
Scanner scanner = new Scanner(System.in);
System.out.println("年齢を入力してください:");
try {
// 整数判定
if (scanner.hasNextInt()) {
age = scanner.nextInt();
}else {
throw new InvalidAgeException("入力値が整数ではありません。", scanner.next());
}
// マイナス判定
if (age < 0) {
throw new InvalidAgeException("入力値がマイナスの値です。", String.valueOf(age));
} else {
System.out.println("年齢は" + age + "才です");
}
} catch (InvalidAgeException e) {
System.out.println("例外エラー:" + e );
}finally {
scanner.close();
}
}
}
■実行結果
▼正常系
・コンソールに「20」を入力した時の結果
年齢を入力してください:
20
年齢は20才です
▼異常系:小数を含む
・コンソールに「20.7」を入力した時の結果
年齢を入力してください:
20.7
例外エラー:exception.InvalidAgeException: 入力値が整数ではありません。入力値:20.7
▼異常系:文字列
・コンソールに「aiueo」を入力したときの結果
年齢を入力してください:
aiueo
例外エラー:exception.InvalidAgeException: 入力値が整数ではありません。入力値:aiueo
▼異常系:マイナスの整数
・コンソールに「-20」を入力した時の結果
年齢を入力してください:
-20
例外エラー:exception.InvalidAgeException: 入力値がマイナスの値です。入力値:-20
■参考
Javaの例外処理については、以下を参照。
コメント