检查数字和字母的密码
问题描述:
我的两个密码验证方法有问题。 hasDigitsAndLetters方法应该检查字符串的所有字符是否都是数字和字母,第二种方法有两个数字应该检查通过中是否至少有两位数字,但问题在于对于预期的结果是true拖延假。如果有人可以帮忙。这里是代码。检查数字和字母的密码
//check if the whole string consists of digits and letters
public static boolean hasDigitsAndLetters(String pass)
{
for(int i=0; i<pass.length(); i++)
{
if(!Character.isLetterOrDigit((i)))
{
return false;
}
}
return true;
}
// check whether the password has at least 2 digits
public static boolean hasTwoDigits(String pass)
{
int counter = 0;
for(int i=0; i<pass.length(); i++)
{
if(Character.isDigit(i))
{
counter ++;
}
}
System.out.println("Number of digits: " + counter);
if(counter >= 2)
{
return true;
}
return false;
}
答
您需要为该字符串在位置i
处传递字符。
Character.isLetterOrDigit((pass.charAt(i)))
相同的数字也
Character.isDigit((pass.charAt(i)))
答
你想在指数i
检查字符串中的字符,而不是索引变量本身:
Character.isLetterOrDigit(pass.charAt(i))
答
您没有核对字符在您的中,您需要将支票更改为:
if(!Character.isLetterOrDigit((pass.charAt(i)))
和
if(Character.isDigit(pass.charAt(i)))
答
现在你正在检查,如果我是一个数字或字母,我是一个int。你需要检查位置i上的字符。
if(Character.isDigit(pass.charAt(i)))
答
的错误是,你的位置在字符串中的那个位置比较成字符串,而不是字符在。我可能不会使用charAt
,但是......在这里保持对这个职位的明确管理没有意义。我建议你改用String.toCharArray。
public static boolean isAlphanumeric(final String str) {
for (char c : str.toCharArray()) {
if (!Character.isLetterOrDigit(c)) {
return false;
}
}
return true;
}
public static boolean isBidigital(final String str) {
int n = 0;
for (char c : str.toCharArray()) {
if (Character.isDigit(c)) {
++n;
}
}
return n >= 2;
}
'Character.isxxx(pass.charAt(I))' – assylias 2012-07-31 18:38:57