teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

typo 修正

2016/10/21 13:45

投稿

mit0223
mit0223

スコア3401

answer CHANGED
@@ -49,7 +49,7 @@
49
49
  try {
50
50
  int ans = Integer.parseInt(br.readLine());
51
51
  if (ans < 1 || ans > 3) {
52
- System.out.println("1 から 3 の範囲で入力してください");
52
+ errorStream.println("1 から 3 の範囲で入力してください");
53
53
  } else {
54
54
  return ans;
55
55
  }

1

数値読み込みのエラーチェックのところが気になったので、修正しました。

2016/10/21 13:45

投稿

mit0223
mit0223

スコア3401

answer CHANGED
@@ -11,13 +11,13 @@
11
11
  private String question;
12
12
  private String candidates;
13
13
  private int answer;
14
-
14
+
15
15
  quiz(String q, String c, int a) {
16
16
  question = q;
17
17
  candidates = c;
18
18
  answer = a;
19
19
  }
20
-
20
+
21
21
  public static quiz readNewQuiz(BufferedReader quizDataReader) throws IOException {
22
22
  String q;
23
23
  if ((q = quizDataReader.readLine()) == null) {
@@ -33,17 +33,32 @@
33
33
  }
34
34
  return new quiz(q, c, Integer.parseInt(a));
35
35
  }
36
-
36
+
37
37
  public void printQuestion(int count, PrintStream ps) {
38
38
  ps.println("第" + count +"問 " + question);
39
39
  ps.println(candidates);
40
40
  ps.println("なお、数字のみ入力してください。(以後共通)例:3");
41
41
  }
42
-
42
+
43
43
  public boolean checkAnswer(int ans) {
44
44
  return answer == ans;
45
45
  }
46
+
46
-
47
+ public static int readNumber(BufferedReader br, PrintStream errorStream) throws IOException {
48
+ while (true) {
49
+ try {
50
+ int ans = Integer.parseInt(br.readLine());
51
+ if (ans < 1 || ans > 3) {
52
+ System.out.println("1 から 3 の範囲で入力してください");
53
+ } else {
54
+ return ans;
55
+ }
56
+ } catch (NumberFormatException e) {
57
+ errorStream.println("数値を入力してください");
58
+ }
59
+ }
60
+ }
61
+
47
62
  public static void main (String[]args) throws IOException {
48
63
  BufferedReader quizDataReader = new BufferedReader(new FileReader("quizdata.txt"));
49
64
  InputStreamReader is = new InputStreamReader(System.in);
@@ -53,23 +68,15 @@
53
68
  quiz q = readNewQuiz(quizDataReader);
54
69
  if (q == null) break;
55
70
  q.printQuestion(count, System.out);
56
- int ans = 0;
57
- try {
58
- ans = Integer.parseInt(br.readLine());
59
- } catch (NumberFormatException e) {
71
+ int ans = readNumber(br, System.out);
60
- }
61
- if (ans < 1 || ans > 3) {
62
- System.out.println("1 から 3 の数値を入力してください");
63
- break;
64
- } else if (q.checkAnswer(ans)) {
72
+ if (q.checkAnswer(ans)) {
65
73
  System.out.println("正解!第" + ++count +"問に進みます。");
66
74
  } else {
67
75
  System.out.println("不正解です。残念。");
68
76
  break;
69
77
  }
70
78
  }
71
- }
79
+ }
72
-
73
80
  }
74
81
  ```
75
82