Java布尔方法返回总是false



我不明白为什么这个方法只返回false,这就是我得到的:

public static boolean something(String word){       
for (int i = 0; i < word.length(); i++){
char c = word.charAt(i);
if((Character.isUpperCase(c)) && (Character.isDigit(c)) && (Character.isLetter(c)) && (Character.isLowerCase(c))
&& (password.length() >= 8 && password.length() <=15));
return true;
}
return false;
}
}

我缺了什么东西,有人能给我一个提示吗?该代码应该检查字符串单词是否在8到15个字符之间、是否只包含字母和数字,包含至少一个大写字母,至少包含一个小写字母,至少含有一个数字

谢谢,

您在测试中使用AND(&&(,如果您测试的字符是大写AND数字AND字母AND小写,则该值始终为false

如果可以的话,我建议您将其中一些作为单独的测试进行处理。对于您指定的要求,我的伪代码如下所示:

  • 将UpperCaseFound、LowerCaseFound、digitalFound设置为未找到
  • 如果密码长度为<8或>15然后返回false
  • 对于每个字符
    • 如果char为UpperCase,则将UpperCaseFound设置为true
    • 否则,如果char为LowerCase,则将LowerCaseFound设置为true
    • 否则,如果char是数字,则将DigitFind设置为true
    • else返回false(因为任何不是上限、下限或数字的内容都是不可接受的(
  • 如果UpperCase&amp;小写&amp;digitalFound被找到,然后返回true

希望它能帮助

假设参数为"test1234Cc";,您的代码如下。

如果"t"是大写和小写以及数字和字母,则返回true。

如果"e"是大写和小写、数字和字母,则返回true。

如果's'是大写和小写、数字和字母,则返回true。

这是不可能的!

在这种情况下

最好使用正则表达式。

public static boolean something(String word){       
String pattern = "((?=.*C)(?=.*c)(?=.*[0-9])).{8,15}$";
return Pattern.matches(pattern, word);
}

除了其他注释外,请注意在if的末尾添加了一个分号,这意味着始终执行以下语句。例如,看到这种情况将始终打印TRUE:

if(false);
System.out.println("TRUE");

最新更新