【问题标题】:PasswordChecker in JavaJava中的密码检查器
【发布时间】:2019-02-21 21:42:35
【问题描述】:

这是一个课堂作业,我必须检查用户输入的密码。我似乎无法弄清楚如何检查有效字符的密码。这些是要求:

1.循环直到输入有效密码。

一个有效的密码:

至少应包含 1 个大写字母。

至少应包含 1 个小写字母。

至少应包含 6 个字符。

应该至少有 1 个数字。

只能包含字母、数字或下划线

我需要一些关于将 hasValidCharacters 设置为 true 并将 isValid 设置为 true 的 if 语句的帮助,以便我可以显示正确的密码。

     String password;
     boolean isValid = false;
     boolean hasUpperCase = false;
     boolean hasLowerCase = false;
     boolean hasDigit = false;
     boolean hasValidCharacters = false;
     boolean hasLength = false;

     //Loop until a valid password is entered
     System.out.print("Enter password: ");
     password = kb.nextLine();
     char ch;
     for(int i=0;i<password.length();i++)
     {
       ch = password.charAt(i);

        //Display all appropriate error messages
        if(Character.isUpperCase(ch))
          hasUpperCase=true;
        else  
          System.out.println("ERROR:  should have at least 1 uppercase letter.");
        if(Character.isLowerCase(ch))
          hasLowerCase=true;
        else    
          System.out.println("ERROR: should have at least 1 lowercase letter.");
        if(password.length()>6)
          hasLength=true;
        else  
          System.out.println("ERROR: should be at least 6 characters long.");
        if(Character.isDigit(ch))  
          hasDigit=true;
        else  
          System.out.println("ERROR: should have at least 1 digit.");
        if()
          hasValidCharacters=true;
        else  
          System.out.println("ERROR: should only contain letters, digits or underscore");



        //Display password when valid   
        if(isValid=true)
          System.out.println(password + " is valid. ");
        else
          System.out.print("Enter valid password: ");
          password = kb.nextLine();  

     }
  }
}

【问题讨论】:

    标签: java input character


    【解决方案1】:

    有很多方法可以做到这一点。不想用勺子喂,所以这是我的观察。

    • 为每个“条件”设置布尔变量(看起来您已经这样做了)
    • 您可以在循环外只调用一次password.length()(每次迭代都这样做)
    • 从循环中删除打印语句。请记住,这个循环将运行 X 次(其中 X 是长度),理论上每个字符应该只满足一个条件。这意味着它将打印所有其他 else 语句。

    【讨论】:

      【解决方案2】:

      我还建议将您的逻辑包装在“do while”循环中,以便您可以在密码无效时再次提示用户输入他/她的密码。否则,您的程序将终止,并且每次用户提供非限定密码时都必须重新运行。

      boolean valid = false;
      
      do{
        //ask user for input
      
        //validate the input
      
      }while(!valid);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-08
        • 1970-01-01
        • 1970-01-01
        • 2011-02-03
        • 1970-01-01
        • 2017-02-24
        • 2017-09-24
        • 1970-01-01
        相关资源
        最近更新 更多