-6

コメントで解決された '(tempuser.equals(actualuser)' は正しい方法でした。

これは私のコードのスニペットです。

if (tempuser != "a"){
  System.out.println("FAIL");
    logincount=logincount+1;
  }
else {
  System.out.println("Success");
  }

スキャンした変数を出力し、すべてが「a」であっても、プログラムは FAIL を出力します。

何か案は?

リクエストに応じてより多くのコードを投稿できます

4

7 に答える 7

1

オブジェクトで equals() を使用する必要があります。

if (tempuser == null || !tempuser.equals("a")) {
  System.out.println("FAIL");
} //etc.

その理由は、 == が同じ参照であるかどうかを確認するためです。これは int などのプリミティブに対しては機能しますが、オブジェクトに対しては、同等性をテストするためのクラス固有の命令について equals() メソッドの実装に依存する必要があります。

于 2013-04-02T13:41:34.073 に答える
1

を使用した文字列比較==はお勧めしません。文字列を比較する正しい方法はequals()

if(!tempuser.equals("a")) {
    // rest of code
}
else {
    // rest of code
}
于 2013-04-02T13:36:30.877 に答える
0

この回答を提出するまでに無数の他の人が言っていることは間違いないので、左側のオブジェクトへの参照(この場合は文字列) が右側のオブジェクトの参照(文字列 "a")と等しい==かどうかを確認します。 . おそらくやりたいことは、次のようにメソッドを使用することです。tempuserString.equals()

if(!tempuser.equals("a")) {
    //Foo
} else {
    //Barr
}

より包括的な回答はこちらでご覧いただけます

于 2013-04-02T13:40:58.263 に答える
0

文字列を比較するには、String.equals を使用する必要があります

if (tempuser.equals("a"){
于 2013-04-02T13:37:02.187 に答える
0

String.equals(otherString)文字列の内容を比較するために常に使用します。==オブジェクト ID を比較します。

于 2013-04-02T13:37:15.507 に答える
0

文字列が等しいかどうかを比較するには、== を使用しないでください。== 演算子は、2 つのオブジェクトがまったく同じオブジェクトであるかどうかを確認します。2 つの文字列は異なるオブジェクトである可能性がありますが、値は同じです (まったく同じ文字が含まれています)。.equals() メソッドを使用して、文字列が等しいかどうかを比較します。同様に、.compareTo() メソッドを使用して、等しくない比較をテストします。例えば:

String s = "something", t = "maybe something else";
if (s == t)      // Legal, but usually WRONG.
if (s.equals(t)) // RIGHT
if (s > t)    // ILLEGAL
if (s.compareTo(t) > 0) // CORRECT>
于 2013-04-02T13:37:52.587 に答える
0

==Javaで andを使用すると!=、参照がまったく同じオブジェクトを指しているかどうかがチェックされます。これはほとんどありません。

代わりにメソッドを使用して.equals()、文字列の内容が等しいかどうかを確認することをお勧めします。

if (!tempuser.equals("a")){
    // Do stuff
}
于 2013-04-02T13:37:57.447 に答える