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

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

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

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

Q&A

解決済

1回答

1759閲覧

while文 無限ループ処理

hiro.a

総合スコア28

Java

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

0グッド

0クリップ

投稿2020/03/25 04:09

編集2020/03/25 04:58

javaでランダムで生成される数字のHigh&Low当てるゲームを作ってます。
無限ループ処理を行いたいのですがループされず終了してしまいます。

本来はHigh&Low予想が当たった場合ループされ間違った場合は終了する様にしたいです。

間違っている場所がありましたら教えてください

前提・実現したいこと

■■な機能を実装中に以下のエラーメッセージが発生しました。

ループ処理が行われずに通常通り処理され、ゲームが終了します。

該当のソースコード

java

1 Scanner sc = new Scanner(System.in); 2 System.out.println("**********"); 3 System.out.println("*High & Low*"); 4 System.out.println("**********"); 5 6 System.out.println(); 7 8 9 while(true) { 10 int leftCard = (int)(Math.random()*9)+1; 11 System.out.println(" [問題表示] "); 12 System.out.println("***** *****"); 13 System.out.println("* * * * *"); 14 System.out.println("* " +leftCard + " * * * *"); 15 System.out.println("* * * * *"); 16 System.out.println("***** *****"); 17 System.out.println("High or Low ?(h/l) > "); 18 String select = sc.nextLine(); 19 20 if (select.equals("h")) { 21 System.out.println("→Highを選択しました。"); 22 23 } else { 24 System.out.println("→Lowを選択しました。"); 25 }; 26 27 System.out.println(""); 28 29 System.out.println("[結果表示]"); 30 System.out.println("***** *****"); 31 System.out.println("* * * *"); 32 int rightCard = (int)(Math.random()*9)+1; 33 System.out.println("* "+leftCard+ " * * " +rightCard+ " *"); 34 System.out.println("* * * *"); 35 System.out.println("***** *****"); 36 37 38 String result = null ; 39 if (leftCard < rightCard) { 40 result = "h" ; 41 } else if (leftCard >rightCard ) { 42 result = "l"; 43 } else if ( leftCard == rightCard) { 44 result = select ; 45 }; 46 47 48 if (result.equals(select)) { 49 System.out.println("→You Win!"); 50 } else { 51 System.out.println("→you Lose..."); 52 break; 53 } 54 } 55 56 57 58 System.out.println(""); 59 60 System.out.println("--ゲーム終了--"); 61 } 62 }

試したこと

whlieの位置を変えてみました。

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

Zuishin

2020/03/25 04:12

ループがまったく実行されていないとしたら main から呼んでないんじゃないでしょうか。
m.ts10806

2020/03/25 04:18

コードのマークダウンできてません。投稿する前にプレビュー確認してください。(たぶん2回目) 読みづらくて読む気になりません。 というか、前の質問解決してないですよね。
hiro.a

2020/03/25 04:19

mainからというのは while(true) { Scanner sc = new Scanner(System.in); という事でしょうか?
m.ts10806

2020/03/25 04:19

while分かってないだけでは。 ドキュメント確認してください
Zuishin

2020/03/25 04:28 編集

そこから、というか下手するとその前からですか。Hello World は実行できましたか? まだならそれができてからにしてください。
m.ts10806

2020/03/25 04:29

>ループされず終了してしまいます。 この書き方では2通りの伝わり方があるんですけどお気づきでしょうか。
hiro.a

2020/03/25 04:31

Zuishin様 "Hello World"の実行はできます。
hiro.a

2020/03/25 04:33

m.ts10806様 ループ処理が行われずに通常通りの処理になる。
jimbe

2020/03/25 04:41 編集

ご提示のコードだけではコンパイル出来ません. 編集できますので, コンパイル・実行(そして「ループされず終了」してしまうことが確認)できるコード(=javaファイル全体)にして頂けますか.
m.ts10806

2020/03/25 04:40 編集

Zuishinさんの指摘で気づきませんか。あの書き方だとループ内が実行されたかどうかすら分からないということです。「されない」ではなく「こうなる」起きたことを書いてください。 どうなるつもりで書いたコードなのか他人なので説明されないと分かりません。 コピペで実行できませんしね。途中のコードだけだから。 ひとまず質問のコードのマークダウン対応を可及的速やかにお願いします。 それに…ひとつ前の質問では私の回答をベストアンサーに選んだのならコード変わりますよね。
Zuishin

2020/03/25 05:01 編集

Java のプログラムは main から始まります。そこからたどってこのコードに行き着かなければ実行されません。 行き着いたのであれば、少なくともループが一度は実行され、"[問題表示]" が表示されます。どうなりますか?
kaina

2020/03/25 04:55

今まで何度かマークダウン形式に変更するよう指摘をしてもらっているのに 改善する気がサラサラないのか同じことの繰り返し。 指摘事項を改善する気が無いなら、ここで質問しても意味ないんじゃないの?
stdio

2020/03/25 05:02

とりあえず、mainとかの基礎中の基礎中のマジの基礎は出来ていると仮定して... > 無限ループ処理を行いたいのですがループされず終了してしまいます。 whileにtrueを入れているということは何かしらのエラーが発生して止まっていると言うことになります。 エラー内容を記載して下さい。 どんなエディター使っているのかは分かりませんが、少なくともエラー内容は表示出来るソフトを使っているはずです。
hiro.a

2020/03/25 05:11

studio様 エディタはEclipseです。現場、特にエラーは発生していません
INO_s

2020/03/25 05:14

コンソールに出力されている内容を提示してください
Zuishin

2020/03/25 05:15

どう表示されたか聞いても梨のつぶて。ただのクイズの臭いがする。
stdio

2020/03/25 05:16 編集

コンパイルエラーではなくてだね... 質問ですが、この辺の固定文言は表示されていますか? System.out.println(" [問題表示] "); System.out.println("***** *****"); System.out.println("* * * * *"); System.out.println("* " +leftCard + " * * * *"); System.out.println("* * * * *"); System.out.println("***** *****");
stdio

2020/03/25 05:23

それより、皆さん結構丁寧なんですね^^ 私はかなり冷たい性格なので、一度言って聞かない場合は見捨てるようにしています。 会社の部下ならしっかり答えますが、ここでは答える気にはなりません。
guest

回答1

0

ベストアンサー

これ、当たったときにループして、外れたときにループから抜けるようになっています。つまりbreakの置き場所が違います。

投稿2020/03/25 05:14

swordone

総合スコア20651

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問