2012-05-07 5 views
-2

Я должен иметь какую-то синтаксическую ошибку где-то, потому что оба correctip и loginip равны, но мой код по-прежнему говорит, что они не равны.Java - проблема с оператором «if»

 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

Это строки? Если это так, вы должны использовать функцию .equals() function –

+1

Каковы их типы? –

+1

Какой тип 'correctip' и' loginip'? Если они не ints или какой-либо другой примитив, вы должны использовать 'loginip.equals (correctip)' – Paulpro

ответ

4

correctip и loginip Возможно, String. В этом случае, вы должны использовать equals компаратор:

if(correctip != null && correctip.equals(loginip)) { 
    //your logic goes here... 
} 
+0

Спасибо, я не знал об этом. – DannyF247

1

если обе переменные являются строками, вам нужно использовать correctip.equals(loginip) или correctip.equalsIgnoreCase(loginip) для их сравнения.

1

Какая форма регистрации и исправления?

По вашему утверждению я предполагаю, что тип не должен быть примитивным (например: int, long, short и т. Д.). Вместо этого это был бы объект (возможно, это строка). поэтому loginip или correctip на самом деле является ссылкой на эти два объекта.

Знак равенства только гарантирует равенство его ссылочного адреса. Чтобы сравнить два объекта, вы должны использовать метод equals или equalsIgnoreCase вместо =.

Смежные вопросы