-1

&& のようなブール演算子を含む if ステートメントの使用方法を学ぶために、基本的な「20 の質問」タイプのものを作成しようとしています。ただし、私の「if」ステートメントは、その基準が満たされているにもかかわらず、「実行中」ではありません (申し訳ありません) (私が知る限り)。

コンパイルすると、入力した「回答」に関係なく、「私が正しいかどうか尋ねます...」という唯一の出力が得られます ALA:

Think of an object, and I'll try to  guess it!
1. Is it an animal, vegetable, or mineral?vegetable
Is it bigger than a breadbox?yes
I'd ask you if I'm right, but I don't really care

グーグルで検索してみましたが、基本的なことを見逃しているように感じます。コードは次のとおりです。

Scanner keyboard = new Scanner(System.in);
    String response1, response2;

    System.out.println("Think of an object, and I'll try to "
            + " guess it!");
    System.out.print("1. Is it an animal, vegetable, or mineral?");
    response1 = keyboard.next();

    System.out.print("Is it bigger than a breadbox?");
    response2 = keyboard.next();

    if(response1 == "animal" && response2 == "yes")
    {
        System.out.println("You're thinking of a moose");
    }
    if(response1 == "animal" && response2 == "no")
    {
        System.out.println("You're thinking of a squirrel");
    }
    if(response1 == "vegetable" && response2 == "yes")
    {
        System.out.println("You're thinking of a watermelon");
    }
    if(response1 == "vegetable" && response2 == "no")
    {
        System.out.println("You're thinking of a carrot");
    }
    if(response1 == "mineral" && response2 == "yes")
    {
        System.out.println("You're thinking of a Camaro");
    }
    if(response1 == "mineral" && response2 == "no")
    {
        System.out.println("You're thinking of a paper clip");
    }

    System.out.println("I'd ask you if I'm right, but I don't really care");

すべての回答者に事前に感謝します!

4

4 に答える 4

1

次のような文字列を比較する必要があります

if(response1.equals("animal")){

// do something 
}

==正確な値を比較します。したがって、プリミティブ値が同じかどうかを比較し、

String#.equals()は、オブジェクトの比較メソッドを呼び出します。これは、 が指す実際のオブジェクトを比較しますreferences。の場合、Strings各文字を比較して、それらが であるかどうかを確認しますequal

于 2013-07-22T09:10:54.243 に答える
0

equals()Strings not を比較するために使用する必要があります==

あなたの例を使用して:

if(response1.equals("animal") && response2.equals("yes"))
{
    System.out.println("You're thinking of a moose");
}...
于 2013-07-22T09:11:15.460 に答える
0

コードの問題は、「&&」演算子ではなく、文字列比較に関連しています。文字列比較には equalsメソッドを使用します。「==」は、2 つの参照が同じメモリ オブジェクトを指しているかどうかをチェックします。

文字列比較の if チェックを置き換えます

から

if(response1 == "animal" && response2 == "yes")

if("animal".equals(response1) && "yes".equals(response2))

これは、Java での文字列比較の詳細を理解するための関連記事です。

Java String.equals と ==

于 2013-07-22T09:13:47.250 に答える
0

文字列値の比較equalsIgnoreCase

if(response1.equalsIgnoreCase("animal")){

 //process
}

ここでブール値の条件チェック

于 2013-07-22T09:15:01.260 に答える