我必须在某处出现某种语法错误,因为correctip
和loginip
都相同,但我的代码仍然说它们不相等。
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);
}
correctip
和loginip
完全相同。是否有其他可能导致问题的原因?
答案 0 :(得分:4)
correctip
和loginip
可能是String
。在这种情况下,您应该使用equals
比较器:
if(correctip != null && correctip.equals(loginip)) {
//your logic goes here...
}
答案 1 :(得分:1)
如果两个变量都是字符串,则需要使用correctip.equals(loginip)
或correctip.equalsIgnoreCase(loginip)
进行比较。
答案 2 :(得分:1)
loginip和correctip的类型是什么?
根据您的陈述,我假设该类型不应该是原始的(例如:int,long,short等)。相反,它将是一个对象(可能是字符串)。所以loginip或correctip实际上是这两个对象的引用。
等号仅确保其参考地址的相等性。要比较两个对象,您应该使用方法equals
或equalsIgnoreCase
代替=
。