-2

我必须在某处出现某种语法错误,因为两者correctiploginip都相等,但我的代码仍然说它们不相等。

        if(correctip != loginip){
            event.disallow(null, "Access is denied to user " + name + ". If you believe this is in error, contact an admin.");
            System.out.println(loginip);
            System.out.println(correctip);
            System.out.println("[Denied] HIGHRISKUSER " + name + " denied login. IP Att: " + loginip + " | IP Cor: " + correctip);
        }else{
            System.out.println("[Allowed] HIGHRISKUSER " + name + " allowed login. IP Att: " + loginip + " | IP Cor: " + correctip);
        }

两者correctiploginip完全相等。还有其他可能导致问题的东西吗?

4

3 回答 3

4

correctip并且loginip可能是String。在这种情况下,您应该使用equals比较器:

if(correctip != null && correctip.equals(loginip)) {
    //your logic goes here...
}
于 2012-05-07T03:53:34.327 回答
1

如果两个变量都是字符串,则需要使用correctip.equals(loginip)correctip.equalsIgnoreCase(loginip)比较它们。

于 2012-05-07T03:54:34.220 回答
1

loginip和correctip的类型是什么?

根据您的说法,我假设类型不应该是原始的(例如:int、long、short 等)。相反,它将是一个对象(可能是字符串)。所以loginip或者correctip其实就是这两个对象的引用。

等号仅保证其引用地址的相等性。要比较两个对象,您应该使用方法equalsequalsIgnoreCase代替=

于 2012-05-07T04:09:17.173 回答