質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

2918閲覧

Javaの条件判断の書き方

esss

総合スコア10

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/12/17 23:31

javaにおいて、ある数字(0から9まで)を設定した後にキーボードから値を入力(0から9まで)し、設定した正解とあっていれば正解、そうでなければ大きいか小さいかを表示し、4回繰り返しても正解しなければ終了し、4回のうちに正解した時点で終了させるようなプログラムの作り方についての質問です。

途中まではわかるのですが、最後の部分の4回のうちに正解した時点で終了させる、というところをどう記述すればよいのか悩んでいます。

実行環境はjava8、eclipceのコンソールです。

非常に初歩的な質問かと思いますが、どなたかご助力いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

kozuchi

総合スコア1193

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

esss

2015/12/18 01:02

なるほど、そういった考え方もあるのですね。 参考にさせていただきます。 ありがとうございます。
guest

0

1.不正解の回数をカウント
2.forもしくはwhile文の最後で不正解の回数を判定
→不正解が4回であれば、break;もしくはreturn;

投稿2015/12/18 00:10

moredeep

総合スコア1507

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

esss

2015/12/18 00:14

無事に解決できました。ありがとうございました。
guest

0

ベストアンサー

for文か何かで繰り返しをしていると思います。break文を入れるといいでしょう。

投稿2015/12/17 23:41

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

esss

2015/12/18 00:13

無事に解決できました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問