以下の英単語暗記プログラムを作成中なのですが
実行した際に
単語表示→単語の意味入力→正答判定→不正解なら同じ単語をもう一度、正解ならもう一度プログラムを実行し直すかどうかまでは完成し
実際に
「sincerely:敬具
正解
もう一度実行しますか 1.はい 2.いいえ
1
mature:」
のように動作します
そこで、例えばですが
「sincerely:敬具
正解
『5回目の正解です、』もう一度実行しますか 1.はい 2.いいえ
1
mature:」
のように、一度正解するたびにカウントさせるようにするには
どのようにコードを記述すればよいのか、どなたかご指導を賜れますでしょうか
現在、Javaの参考書、問題集、検索などをしているのですが、for文、while文など試しつつも、自分の力不足ゆえに思い通りにいかないのが現状です
追記:「思い通りにいかないとはどういった現象なのか質問に説明お願いします」との指摘がありましたので説明させていただきます
現在所有している参考書は「スッキリわかるJava入門」の『繰り返し構文のバリエーション』のページを読んでも「一度処理したら一度カウントする」ようなプログラムについては入門編だからか書かれておらず、所有している「Java8問題集500問」の繰り返し処理について書かれているページを見ても、「一度処理をしたら一度カウント」に該当するようなプログラムの例が見当たらず、「java 一度処理 一度カウント」で検索しても数字を条件式通りに繰り返すまでのプログラムの例しかでてこないため、調べれば自分の考えているプログラムの例が出てくるだろうと思い試したのですが、未だに出てこないため、思い通りにいかないという現象です。
よろしくお願い致します
lang
1import java.util.Random; 2import java.util.Scanner; 3 4public class EitangoAnki { 5 public static void main(String[] args) { 6 Random r = new Random(); 7 Scanner sc = new Scanner(System.in); 8 String[] meaN = {"敬具","大人になった" 9 }; 10 11 while(true) { 12 int wordNumber = r.nextInt(1); // 0〜1の乱数 13 14 String answer = meaN[wordNumber]; // 答えとなる文字列 15 16 String[] Word = {"sincerely","mature"}; 17 18 while(true) { 19 System.out.print(Word[wordNumber] + " : "); // 出題 20 String yourAns = sc.next(); // 解答を入力 21 22 if(yourAns.equals(answer)) { // 判定 23 System.out.println("正解"); 24 break; 25 } else { 26 System.out.println("不正解"); 27 } 28 } 29 30 31 System.out.println("もう一度実行しますか 1.はい 2.いいえ"); 32 if(!sc.next().equals("1")) { 33 break; 34 } 35 } 36 System.out.println("終了します"); 37 } 38 }
追記です:
現在、while文の中で
for文を使い、入力した答えと、予め用意されていた答えがtrueの場合、変数iにを1つ足すようにコードを追加してみたのですが
1枚目の画像のように、無限ループしてしまいます。
そこで、1度処理をしたあと繰り返し自体を中断させるため、break;を記述すると
2枚目の画像のように、下の「もう一度実行しますか〜〜」の処理がされず、延々と「0回目の正解です」→入力→「0回目の正解です」が繰り返され
i++がデッドコードとエラーが出てしまうところで躓いております。
回答2件
あなたの回答
tips
プレビュー