• ベストアンサー

選択肢

・ ・ ・ int dealer=0; String line = "Y"; while(line == "Y"){ for(int p = 1; p < 3; p++){ int c=(int)(Math.random()*11); System.out.println(p + "回目に引いたカードは"+ c +"です。"); }//自分のひいたカード表示 System.out.println("まだ引きますか?(Y/N)"); line = reader.readLine(); System.out.println(line); if(line == "y"){ System.out.println("イエス"); }else if(line == "n"){ System.out.println("ノー"); } } 上記のようにline という変数に納入した文字をifに使用したいのですが、yとうっても「ノー」の所へ行ってしまいます。どうしてなのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

if(line == "y"){ System.out.println("イエス"); }else if(line == "n"){ System.out.println("ノー"); ---- の、==で比較しているところを、 equalsを使ってみたらどうでしょう。 ---- f(line.equals("y")){ System.out.println("イエス"); }else if(line.equals("n")){ System.out.println("ノー"); ---- 「文字列の比較には、==ではなくequals()を使う」 というのは一つの基本です。 それで動かなかったら補足に書き込んでください。

megumi0808
質問者

お礼

動きました! 文字のときは==ではなかったのですね、 ありがとうございました!

その他の回答 (1)

回答No.2

あと while(line == "Y") の部分もね。 それと while(line.equals("Y"))←大文字で判定 if(line.equals("y"))←小文字で判定 だと「イエス」と出力されても whileの条件でfalseになってwhileのループを抜けますよ。 っていうか、(Y/N)の入力を促してるけど、 結局NじゃなくてもY以外を入力しちゃうとループ抜けますね。 さぁ、どうする???

megumi0808
質問者

お礼

プログラムは無事に完成いたしました。 お答えありがとうございました!^^

関連するQ&A