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");