我不明白为什么这个方法只返回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&;小写&;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");