Java 新密码的连续字符大于3,旧密码则会引发错误。但即使它是3,也会产生误差
在本例中,我们检查新密码的连续字符是否大于3,如果旧密码大于3,则应抛出错误。对于此逻辑,如下所示:Java 新密码的连续字符大于3,旧密码则会引发错误。但即使它是3,也会产生误差,java,Java,在本例中,我们检查新密码的连续字符是否大于3,如果旧密码大于3,则应抛出错误。对于此逻辑,如下所示: if (oldPassword != null) { for (int i = 0; i < oldPassword.length() - PASSWORD_MAX_CONS_LENGTH +1; i++) { if (passwordString.indexOf(oldPassword.substring(i, i + PASSWORD_M
if (oldPassword != null) {
for (int i = 0; i < oldPassword.length() - PASSWORD_MAX_CONS_LENGTH +1; i++) {
if (passwordString.indexOf(oldPassword.substring(i, i
+ PASSWORD_MAX_CONS_LENGTH)) >= 0) {
errors.add(ERROR_PASS_CONS_PREV_PASS);
break;
}
}
}
PASSWORD_MAX_CONS_LENGTH = 3;
if(oldPassword!=null){
对于(int i=0;i=0){
错误。添加(错误\通过\控制\上一次通过);
打破
}
}
}
密码长度=3;
但问题是,若它等于3,它甚至是抛出错误。
我们能有更好的解决办法吗。由于这一逻辑有点复杂:
if(passwordString.indexOf)(oldPassword.substring(i,i
+密码(最大长度)>=0)
我们可以使用任何正则表达式来检查与旧密码相比的3个连续字符。有什么方法可以做到这一点吗?indexOf()的参数是开始索引和要停止的索引+1。因此只需在
i+PASSWORD\u MAX\u CONS\u LENGTH
中添加一个indexOf()
的参数是开始索引和要停止+1的索引。因此,只需在i+PASSWORD\u MAX\u CONS\u LENGTH
中添加一个,使用正则表达式将使其更加复杂。您只需将子字符串的结束索引增加1。使用正则表达式将使其更加复杂。你应该将子字符串的结束索引增加1。IMHO,这种密码规则很愚蠢。你真的只在if块之后设置password\u MAX\u CONS\u LENGTH
吗?不,我们只在前面设置。密码\u MAX\u CONS\u LENGTHIMHO,这种密码规则很愚蠢。你真的只在if块之后设置密码\u MAX\u CONS\u LENGTH
吗?不,我们只在if块之前设置。密码\u MAX\u CONS\u LENGTHI尝试了相同的事情,但我得到了此异常:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:12我尝试了相同的事情,但得到了此异常:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:12我尝试了相同的事情,但得到了此异常:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:12这是您应该能够自己调试的内容。我建议从for循环条件中删除+1。我尝试了相同的方法,但出现了以下异常:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:12这是您应该能够自己调试的。我建议从for循环条件中删除+1