-2

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まったく同じです。他に問題を引き起こしている可能性のあるものはありますか?

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

loginip と correctip の種類は何ですか?

あなたの声明によると、型はプリミティブであってはならないと思います(例:int、long、shortなど)。代わりに、オブジェクト (おそらく文字列) になります。したがって、loginip または correctip は、実際にはこれら 2 つのオブジェクトの参照です。

等号は、その参照アドレスが等しいことを保証するだけです。2 つのオブジェクトを比較するには、の代わりにequalsorメソッドを使用する必要があります。equalsIgnoreCase=

于 2012-05-07T04:09:17.173 に答える
1

両方の変数が文字列の場合は、それらを使用correctip.equals(loginip)またはcorrectip.equalsIgnoreCase(loginip)比較する必要があります。

于 2012-05-07T03:54:34.220 に答える