Next: 4 オブジェクトの直列化
Up: 3 ファイルの取り扱い
Previous: 3.7 文字列トークンを処理する例
例外を区別して対話プログラムでの表示を行う例である.
// WrongAnswerException.java
public class WrongAnswerException
extends Exception {}
WrongAnswerExceptionクラスは
Exceptionクラスのサブクラスとして定義しておき,
答えが間違った場合の処理を受け付ける
catch節を設けている.
checkAnswerメソッドにその例外をスローするthrows節
を宣言し,checkAnswerメソッドを呼んでいるdisplayProblem
もその例外をスローするthrows節を宣言しないと
コンパイルエラーが起こる.
// Answer.java
import java.util.*;
import java.io.*;
public class Answer {
int x, y, answer;
Random random = new Random();
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
void displayProblem()
throws WrongAnswerException {
x = random.nextInt(10);
y = random.nextInt(10);
System.out.print(x + " + " + y + " = ");
checkAnswer();
}
void checkAnswer()
throws WrongAnswerException {
try {
String line = br.readLine();
answer = Integer.parseInt(line);
} catch (IOException e) {
return;
} catch (NumberFormatException e) {
System.err.println(
"数値を入力してください!");
return;
}
if (x + y != answer)
throw new WrongAnswerException();
}
public static void main (String args[]) {
Answer cal = new Answer();
while (true) {
try {
cal.displayProblem();
} catch (WrongAnswerException e) {
System.err.println(
"答が誤っています!");
}
}
}
}
% java Answer
7 + 0 = 40
答が誤っています!
7 + 6 = 13
9 + 5 = 20
答が誤っています!
7 + 1 = 8
0 + 2 = 2
7 + 1 = 9
答が誤っています!
4 + 3 = 7
2 + 4 = .
数値を入力してください!
4 + 3 = abc
数値を入力してください!
0 + 9 =
数値を入力してください!
9 + 4 =
数値を入力してください!
3 + 4 = a
数値を入力してください!
3 + 2 = ^D
数値を入力してください!
1 + 9 =
generated through LaTeX2HTML. M.Inaba 平成18年5月7日