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/ツールのバージョンなど)
ループがまったく実行されていないとしたら main から呼んでないんじゃないでしょうか。
コードのマークダウンできてません。投稿する前にプレビュー確認してください。(たぶん2回目)
読みづらくて読む気になりません。
というか、前の質問解決してないですよね。
mainからというのは
while(true) {
Scanner sc = new Scanner(System.in);
という事でしょうか?
while分かってないだけでは。
ドキュメント確認してください
そこから、というか下手するとその前からですか。Hello World は実行できましたか?
まだならそれができてからにしてください。
>ループされず終了してしまいます。
この書き方では2通りの伝わり方があるんですけどお気づきでしょうか。
Zuishin様
"Hello World"の実行はできます。
m.ts10806様
ループ処理が行われずに通常通りの処理になる。
ご提示のコードだけではコンパイル出来ません.
編集できますので, コンパイル・実行(そして「ループされず終了」してしまうことが確認)できるコード(=javaファイル全体)にして頂けますか.
Zuishinさんの指摘で気づきませんか。あの書き方だとループ内が実行されたかどうかすら分からないということです。「されない」ではなく「こうなる」起きたことを書いてください。
どうなるつもりで書いたコードなのか他人なので説明されないと分かりません。
コピペで実行できませんしね。途中のコードだけだから。
ひとまず質問のコードのマークダウン対応を可及的速やかにお願いします。
それに…ひとつ前の質問では私の回答をベストアンサーに選んだのならコード変わりますよね。
Java のプログラムは main から始まります。そこからたどってこのコードに行き着かなければ実行されません。
行き着いたのであれば、少なくともループが一度は実行され、"[問題表示]" が表示されます。どうなりますか?
今まで何度かマークダウン形式に変更するよう指摘をしてもらっているのに
改善する気がサラサラないのか同じことの繰り返し。
指摘事項を改善する気が無いなら、ここで質問しても意味ないんじゃないの?
とりあえず、mainとかの基礎中の基礎中のマジの基礎は出来ていると仮定して...
> 無限ループ処理を行いたいのですがループされず終了してしまいます。
whileにtrueを入れているということは何かしらのエラーが発生して止まっていると言うことになります。
エラー内容を記載して下さい。
どんなエディター使っているのかは分かりませんが、少なくともエラー内容は表示出来るソフトを使っているはずです。
studio様
エディタはEclipseです。現場、特にエラーは発生していません
コンソールに出力されている内容を提示してください
どう表示されたか聞いても梨のつぶて。ただのクイズの臭いがする。
コンパイルエラーではなくてだね...
質問ですが、この辺の固定文言は表示されていますか?
System.out.println(" [問題表示] ");
System.out.println("***** *****");
System.out.println("* * * * *");
System.out.println("* " +leftCard + " * * * *");
System.out.println("* * * * *");
System.out.println("***** *****");
それより、皆さん結構丁寧なんですね^^
私はかなり冷たい性格なので、一度言って聞かない場合は見捨てるようにしています。
会社の部下ならしっかり答えますが、ここでは答える気にはなりません。
回答1件
あなたの回答
tips
プレビュー