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

回答編集履歴

1

追記内容に関する追記

2018/08/08 03:06

投稿

milkteas
milkteas

スコア79

answer CHANGED
@@ -1,4 +1,34 @@
1
1
  int ans = new java.util.Scanner(System.in).nextInt();
2
2
  の部分が入力された文字を読み取る箇所です。
3
3
  elseでメッセージ表示された後に続く処理がないので終わります。
4
- whileなどでループさせて文字読み取り処理部分に戻ればいけるはずです。
4
+ whileなどでループさせて文字読み取り処理部分に戻ればいけるはずです。
5
+
6
+ 追記:
7
+ 記載されている内容だとループの囲いがその部分だけなので結局1~3以外の場合に終わってしまいます。
8
+ ループ処理で全体を囲ってあげて、正解の場合には抜ける処理にしてあげるようにする等しましょう。
9
+ 書き方は色々あると思いますが、提示されたコードを元に修正すると下記な感じです。
10
+
11
+ ```Java
12
+ public static void main(String[] args) {
13
+ System.out.println("「上上下下左右左右BA」でお馴染みの名前は○○コマンド?");
14
+ System.out.println("1:コナミ 2: ナムコ 3: セガ");
15
+ System.out.print("正解の番号を入力してください>");
16
+
17
+ // ループ条件が常に真
18
+ while (true) {
19
+ int ans = new java.util.Scanner(System.in).nextInt();
20
+
21
+ if (ans == 1) {
22
+ System.out.println("正解です!");
23
+ System.out.println("1986年に発売されたFCソフト「グラディウス」が元祖ネタです。");
24
+ break;
25
+ } else if (ans == 2 || ans == 3) {
26
+ System.out.println("不正解です…");
27
+ break;
28
+ } else {
29
+ // メッセージを表示して再ループ
30
+ System.out.println("1~3の番号を入力してください。");
31
+ }
32
+ }
33
+ }
34
+ ```