在 Java 中检查密码的方法不起作用
Method to Check Password in Java Not Working
我正在尝试编写一个方法,returns 如果字符串是或不是 CodeHS 中的有效密码。
长度至少为八个字符,并且只能包含字母和数字。
在评分器中,它通过了除 passwordCheck("codingisawesome")
和 passwordCheck("QWERTYUIOP")
之外的所有测试。
这是我目前的情况:
public boolean passwordCheck(String password)
{
if (password.length() < 8)
{
return false;
}
else
{
char c;
int count = 0;
for (int i = 0; i < password.length(); i++)
{
c = password.charAt(i);
if (!Character.isLetterOrDigit(c))
{
return false;
} else if (Character.isDigit(c))
{
count++;
}
}
if (count < 2)
{
return false;
}
}
return true;
}
如果有人能提供帮助,我将不胜感激。谢谢
假设您的要求如前所述
It needs to be at least eight characters long and can only have letters and digits
那就不用数数了。只需检查密码是否为最小长度,然后遍历每个字符,如果不是字母或数字,则返回 false。喜欢,
public boolean passwordCheck(String password) {
if (password != null && password.length() >= 8) {
for (char ch : password.toCharArray()) {
if (!Character.isLetterOrDigit(ch)) {
return false;
}
}
return true;
}
return false;
}
尝试一种使用模式的方法(这比循环更简单):
public boolean passwordCheck(String password)
{
return password!=null && password.length()>=8 && password.matches("[A-Za-z0-9]*");
}
关于正则表达式的体面教程(这就是 A-Z 魔法的来源):http://www.vogella.com/tutorials/JavaRegularExpressions/article.html
它没有通过这些测试,因为您的代码检查密码必须至少有 2 位数字:-
if (count < 2)
{
return false;
}
而你的测试字符串没有。删除这段代码,它应该可以工作。有关更好的方法,请参阅其他答案。
我正在尝试编写一个方法,returns 如果字符串是或不是 CodeHS 中的有效密码。
长度至少为八个字符,并且只能包含字母和数字。
在评分器中,它通过了除 passwordCheck("codingisawesome")
和 passwordCheck("QWERTYUIOP")
之外的所有测试。
这是我目前的情况:
public boolean passwordCheck(String password)
{
if (password.length() < 8)
{
return false;
}
else
{
char c;
int count = 0;
for (int i = 0; i < password.length(); i++)
{
c = password.charAt(i);
if (!Character.isLetterOrDigit(c))
{
return false;
} else if (Character.isDigit(c))
{
count++;
}
}
if (count < 2)
{
return false;
}
}
return true;
}
如果有人能提供帮助,我将不胜感激。谢谢
假设您的要求如前所述
It needs to be at least eight characters long and can only have letters and digits
那就不用数数了。只需检查密码是否为最小长度,然后遍历每个字符,如果不是字母或数字,则返回 false。喜欢,
public boolean passwordCheck(String password) {
if (password != null && password.length() >= 8) {
for (char ch : password.toCharArray()) {
if (!Character.isLetterOrDigit(ch)) {
return false;
}
}
return true;
}
return false;
}
尝试一种使用模式的方法(这比循环更简单):
public boolean passwordCheck(String password)
{
return password!=null && password.length()>=8 && password.matches("[A-Za-z0-9]*");
}
关于正则表达式的体面教程(这就是 A-Z 魔法的来源):http://www.vogella.com/tutorials/JavaRegularExpressions/article.html
它没有通过这些测试,因为您的代码检查密码必须至少有 2 位数字:-
if (count < 2) { return false; }
而你的测试字符串没有。删除这段代码,它应该可以工作。有关更好的方法,请参阅其他答案。