javaにおいて、ある数字(0から9まで)を設定した後にキーボードから値を入力(0から9まで)し、設定した正解とあっていれば正解、そうでなければ大きいか小さいかを表示し、4回繰り返しても正解しなければ終了し、4回のうちに正解した時点で終了させるようなプログラムの作り方についての質問です。
途中まではわかるのですが、最後の部分の4回のうちに正解した時点で終了させる、というところをどう記述すればよいのか悩んでいます。
実行環境はjava8、eclipceのコンソールです。
非常に初歩的な質問かと思いますが、どなたかご助力いただければ幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
推測ですが、おそらく、
- 正解かどうかの判定 -> 正解なら終わる
- 4回という制限の判定 -> 超えたら終わる
という二つの終了条件があるため、
ループを抜けた後の処理が上手く書けないという問題に行き当っていらっしゃるのではないでしょうか?
以下のコードでは、制限回数の判定をループに使っています。
Java
1 2public class Sample { 3 4 public static void main(String[] args) { 5 String correct = "1"; // 正解 6 String in_str = ""; // 受け取り文字列の初期化 7 int limit = 4; // 制限回数 8 9 for ( int i = 0 ; i < limit; ++i ) { 10 11 // 【省略しています】 入力処理、 in_str に文字を読み取る 12 13 if ( in_str.equals(correct) ) { 14 System.out.println("正解です。"); 15 // ここで break していいの ??? 16 17 } else { 18 System.out.println("不正解です。"); 19 } 20 } 21 System.out.println("制限回数を超えました。"); 22 } 23 24}
この場合、正解でループを抜ける場合にどうするかという問題が出てきます。
Java
1 if ( in_str.equals(correct) ) {
で正解だった場合に、break してしまうと、ループから抜けて
Java
1 System.out.println("制限回数を超えました。");
が実行されてしまいます。
Java
1if ( !in_str.equals(correct) ) { 2 System.out.println("制限回数を超えました。"); 3}
という回避策も考えられますが、同じ判定を二回することになり、
無駄な感じがします。
別の方法としては、
Java
1if ( in_str.equals(correct) ) { 2 System.out.println("正解です。"); 3 System.exit(0); 4} else {
のようにするのも一つの方法ですが、プログラムを終了してしまっていい場合にしか使えません。
私は、こういった場合はメソッドを分けてしまったほうがいいと思います。
Java
1public class Sample2 { 2 3 public static void main(String[] args) { 4 Sample2 sample2 = new Sample2(); 5 6 if ( sample2.doSample() ) { 7 System.out.println("制限回数を超えました。"); 8 } 9 } 10 11 private boolean doSample() { 12 String correct = "1"; // 正解 13 String in_str = ""; // 受け取り文字列の初期化 14 int limit = 4; // 制限回数 15 16 for ( int i = 0 ; i < limit; ++i ) { 17 18 // 【省略しています】 入力処理、 in_str に文字を読み取る 19 20 if ( in_str.equals(correct) ) { 21 System.out.println("正解です。"); 22 return true; 23 } else { 24 System.out.println("不正解です。"); 25 } 26 } 27 return false; 28 } 29}
投稿2015/12/18 00:39
総合スコア1193
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/18 01:02