2013-03-24 70 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()