Java 布尔方法 return 始终为假
Java Boolean method return is always false
我不明白为什么这个方法只有 return 错误,这就是我得到的:
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、digitFound 设置为未找到
- 如果密码长度小于 8 或大于 15,则 return false
- 对于每个字符
- 如果 char 是 UpperCase,则将 UpperCaseFound 设置为 true
- 否则,如果 char 是 LowerCase,则将 LowerCaseFound 设置为 true
- 否则,如果 char 是数字,则将 DigitFound 设置为 true
- else return false(因为任何非大写、小写或数字的内容都是不可接受的)
- 如果找到 UpperCase && LowerCase && digitFound 则 return true
希望对您有所帮助
假设参数是“test1234Cc”,你的代码如下。
如果 't' 是大写和小写以及数字和字母,则 return 为真。
如果'e'是大小写、数字和字母,则return为真。
如果's'是大小写、数字和字母,则return为真。
.....
这不可能!
在这种情况下
最好使用正则表达式。
public static boolean something(String word){
String pattern = "((?=.*C)(?=.*c)(?=.*[0-9])).{8,15}$";
return Pattern.matches(pattern, word);
}
除了其他注释之外,请注意您在 if
末尾添加了 semi-colon,这意味着始终执行以下语句。例如看到这种情况将始终打印 TRUE:
if(false);
System.out.println("TRUE");
我不明白为什么这个方法只有 return 错误,这就是我得到的:
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、digitFound 设置为未找到
- 如果密码长度小于 8 或大于 15,则 return false
- 对于每个字符
- 如果 char 是 UpperCase,则将 UpperCaseFound 设置为 true
- 否则,如果 char 是 LowerCase,则将 LowerCaseFound 设置为 true
- 否则,如果 char 是数字,则将 DigitFound 设置为 true
- else return false(因为任何非大写、小写或数字的内容都是不可接受的)
- 如果找到 UpperCase && LowerCase && digitFound 则 return true
希望对您有所帮助
假设参数是“test1234Cc”,你的代码如下。
如果 't' 是大写和小写以及数字和字母,则 return 为真。
如果'e'是大小写、数字和字母,则return为真。
如果's'是大小写、数字和字母,则return为真。
.....
这不可能!
在这种情况下
最好使用正则表达式。
public static boolean something(String word){
String pattern = "((?=.*C)(?=.*c)(?=.*[0-9])).{8,15}$";
return Pattern.matches(pattern, word);
}
除了其他注释之外,请注意您在 if
末尾添加了 semi-colon,这意味着始终执行以下语句。例如看到这种情况将始终打印 TRUE:
if(false);
System.out.println("TRUE");