密码验证器

Password Validator

我目前正在尝试使用布尔方法制作密码验证器,因为老师要求我们这样做。这让我抓狂。为确保密码正确,密码需要有一个大写字母、一个小写字母、至少 10 个字符和一个数字。我现在知道,我的方法 returns 完全具有 false 值,但我想知道一旦我有一个大写字母或一个小写字母,我该如何破解代码。

非常感谢您的帮助!

public class AtLeast1UppercaseLowercaseNumber {

public static void main(String[] args){
String password = "H";
System.out.println(password);
if(isSecurePassword(password)){
  System.out.println("Yay it works");}
else {
  System.out.println("you suck");}
}

public static isSecurePassword(String password) {
int uppercase = 0, lowercase = 0, number = 0;

 for(int i=0; i<password.length(); i++) {   
  for(char c ='A'; c <='Z'; c++) {        
    if(password.charAt(i) == c) {
      uppercase++;

      if( uppercase >= 1) {

  for(char t = 'a'; t <='z'; t++) {   
    if(password.charAt(i) == t) {
      lowercase++;
      if(lowercase >= 1) {

      }
    }
  }


  for(int j = '0'; j <='9'; j++) {
    if(password.charAt(i) == j) {
      number++;
      if( number >= 1) {

      }
    }
      }
  }
  return false;
  }
  }

我建议您首先创建多个 privatestatic 测试方法,然后在您的 public 委托 给它们 isSecurePassword(String) 方法。以 boolean oneUpper(String)boolean oneLower(String)boolean oneDigit(String)boolean tenCharacters(String) 等测试方法为例

private static boolean tenCharacters(String str) {
    return str.length() > 9;
}

还有第二个例子

private static boolean oneUpper(String str) {
    for (char ch : str.toCharArray()) {
        if (Character.isUpperCase(ch)) {
            return true;
        }
    }
    return false;
}

那么你的isSecurePassword(String)就是

public static boolean isSecurePassword(String str) {
    return tenCharacters(str) && oneUpper(str) && oneLower(str)
            && oneDigit(str);
}

由于此方法中只有一个 return,它显式 return 为 false,因此此方法将始终 return false。

方法一: 定义一个布尔值,它将在方法的最后一条语句中被 returned。此布尔值默认为 true,如果一个条件错误,将设置为 false。

方法二: 最后一条语句是隐含的 return true 语句,只要条件未满足 return false。这将阻止该方法执行更多测试。

方法三: 使方法看起来像这样

if (containsUpperCase(string) && contains...)
    return true;
return false;