密码验证器

时间:2015-02-14 22:19:15

标签: java methods boolean

我目前正在尝试使用布尔方法设置密码验证器,因为老师要求我们这样做。这让我疯了。要正确,密码需要有一个大写,一个小写字母,至少10个字符和一个数字。我现在知道,我的方法完全返回值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;
  }
  }

2 个答案:

答案 0 :(得分:0)

我建议您首先创建多个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);
}

答案 1 :(得分:0)

由于此方法中只有一个返回显式返回false,因此此方法将始终返回false。

方法1: 定义一个布尔值,它将在方法的最后一个语句中返回。默认情况下,此布尔值为true,如果一个条件错误,则设置为false。

方法2: 最后一个语句是隐式返回true语句,并且每当条件未完全填充时返回false。这将阻止该方法执行更多测试。

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

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