2013-03-24 119 views
1

我有一個輕微的問題,我不明白,我正在建立一個Web服務器,處理Java EG中的調用去使用/SendCommand.html然後Java將處理的要求,我一直在使用後建立一個登錄系統,但由於某些原因,我登錄檢查不工作,Java如果語句比較2值

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; 
} 

我在,如果statment突破提供以下信息。當我調試此我得到的,

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] == userusers.users[0][1] == test爲什麼它返回從該方法錯誤?

+0

它不是一個重複的即時尋找在我的代碼中的特定問題的幫助,不就是.equals之間的差異字符串==我不相信這會令Java中的差別就像它不在大多數Objecting C langs – 2013-03-24 16:20:46

回答

6

請勿使用==來比較字符串。改爲使用s1.equals(s2)。前者比較引用,這幾乎總是不是你想要的。另一方面,後者比較字符序列。

+0

感謝所有細節,我認爲它是火焰蔓延阻礙了C語言不支持字符串比較,這與大多數Objective C語言所做的相同,爲此感謝 – 2013-03-24 16:19:12

0

使用.equals()來比較字符串,而不是==

+0

http://blog.enrii.com/2006/03/15/java-string-equality-common-mistake/ – anvarik 2013-03-24 16:17:09

0
if(users.users[i][0].equals(user) && users.users[i][1].equals(test)) 

始終比較.equals()