1

理解できないわずかな問題があります。JavaEGで呼び出しを処理するWebサーバーを構築しています。/SendCommand.htmlを使用すると、Javaが要求を処理します。postを使用してログインシステムを構築します。 、しかし、何らかの理由でログインチェックが機能していません。

private boolean checkLogin(String user, String pass){
    for(int i = 0; i < users.users.length; i++ ){
        String test = SHA1.toSHA1(pass);
        if(users.users[i][0] == user && users.users[i][1] == test ){
            return true;
        }
    }
    return false;
}

私は以下の情報を提供するためにifステートメントを破っていますこれをデバッグすると、私は得ます、

Name            | Type            | Value
users             Users             #163
  users           String[]          #165(length=1)
    [0]           String[]          #167
      [0]         String            "Admin"
      [1]         String            "d033e22ae348aeb5660fc2140aec35850c4da997"
user              String            "Admin"
pass              String            "admin"
test              String            "d033e22ae348aeb5660fc2140aec35850c4da997"

ご覧users.users[0][0] == userのとおりusers.users[0][1] == test、メソッドからfalseが返されるのはなぜですか?

4

3 に答える 3

6

==文字列の比較には使用しないでください。s1.equals(s2)代わりに使用してください。前者は参照を比較しますが、これはほとんどの場合、必要なものではありません。一方、後者は文字シーケンスを比較します。

于 2013-03-24T16:15:07.383 に答える
0

.equals()ではなく、文字列を比較するために使用します==

于 2013-03-24T16:15:01.773 に答える
0
if(users.users[i][0].equals(user) && users.users[i][1].equals(test))

常にStringを.equals()と比較します

于 2013-03-24T16:15:11.570 に答える