dポイントプレゼントキャンペーン実施中!

javaのプログラムがうまく実行出来ないので教えてください!

class Quiz
{
public static void main(String[] args){

System.out.println("クイズです。答えはひらがなでね!¥n");
System.out.println("一個でも十個あるという「ふ」はなーんだ?¥n");
System.out.print("答え:");

java.util.Scanner sc = new java.util.Scanner(System.in);
String d = sc.nextInt();

if(d==とうふ){
System.out.println("正解です!");

}else {
System.out.println("不正解です!");
}

}
}

A 回答 (3件)

文字列の比較はequals()を利用しなければなりません。


== で比較した時、オブジェクトが同一か、という比較になるので、不正解の方に行っているのです。

https://paiza.io/projects/G7ugUvNUWOnRCkzNa-dwHA
    • good
    • 0

>とうふ、と入れたところで不正解になってしまいます。



どう直したかわからないけど、java では文字列比較に == は
危うい。

Java は同じ文字列を表す文字列リテラルは全て同じ参照になりますが
new String(~) は同じ文字列表現の場合でも 異なる参照を返します。
#文字列を返す関数は内部で new String(~)してる可能性がある。

== は参照を比べる演算子なので、同じ文字列表現かは
チェックできません。

かつては String.equals で比較するのが常識でしたが、
Java 7 以降は NULLチェックが不要な
Objects.equals() を使うことが多いですね。
    • good
    • 0
この回答へのお礼

ありがとうございます!!

お礼日時:2022/01/20 15:11

①nextIntは整数を返す。


②文字列リテラルはダブルクォートで囲もう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
実行できたのですが、if文に不具合があるのか、とうふ、と入れたところで不正解になってしまいます。改善方法など教えてほしいです!

お礼日時:2022/01/19 14:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!