0

重複の可能性:
JavaString.equals対==

私はJava言語を練習するためにjcreatorを使用しています。ユーザー入力が="test"の場合、 "okay!"を出力する条件ステートメントを思いつきました。メッセージ。これは私のコードです:

class conditional {

    public static void main (String[] args) {

        Scanner user_input = new Scanner(System.in);

        String username;
        System.out.print("username: ");
        username = user_input.next();
            if (username == "test") {
                System.out.println("okay");
                    }
                    else {
                                    System.out.println("not okay");
    }
}

上記のコードはエラーを表示せず、「OK」&&「notoky」メッセージも表示しません。ロジックのどこが悪いのかわかりません。

4

6 に答える 6

3

.equals文字列は、ではなくを使用して比較する必要があります==。これは、すべての非プリミティブ比較に当てはまります。たとえば、2つのintフィールドをと比較します==が、文字列はプリミティブで.equalsはないため、正しい選択です。

if (username.equals("test")) {
于 2012-09-05T05:57:08.333 に答える
1

ここで使用する必要がString.equalsあります。

if (username.equals("test")) {

それ以外の場合は、セマンティクスではなく、オブジェクトのIDを比較しています。実際、Stringここには2つの別々のがあり、意味的同等性を満たしています。

于 2012-09-05T05:57:03.917 に答える
0

==または、 doを使用したい場合は、を使用username.intern();できます==

注:参考までに推奨されるアプローチではありません。

于 2012-09-05T06:03:54.527 に答える
0

@veerが言ったように、あなたはequalsIgnoreCase/を使うことができますequals

if (username.equals("test")) { ... }

または

compareToIgnoreCase/を使用できますcompareTo

if (username.compareTo("test")==0) { ... }
于 2012-09-05T06:10:35.007 に答える
0

文字列を比較するには、.equals()メソッドを使用する必要があります。また、文字列内の文字の大文字と小文字を無視する必要がある場合は、使用できます。.equalsIgnoreCase()

 if (username.equals("test")){

 }
 else{

 }
于 2012-09-05T06:13:53.430 に答える
0

あなたがこのようにそれをするならば、それは働きます:

java.util.Scannerをインポートします。

class Conditional {
    public static void main(String[] args) {
        Scanner user_input = new Scanner(System.in);
        String username;

        System.out.print("username: ");
        username = user_input.next();

        if (username.equals("test")) {
            System.out.println("okay");
        } else {
            System.out.println("not okay");
        }

        user_input.close();
    }
}

いくつかの意見:

  • クラス名は大文字で始める必要があります。
  • equalsを比較するために使用しStringます。
  • 結果はまったく印刷されないとあなたは述べています。コンソールをクリックして回答を入力し、入力をで終了する必要がありEnterます。
于 2012-09-05T06:27:46.793 に答える