密码输入规则

时间:2017-05-17 18:52:29

标签: java passwords

import java.util.Scanner;
public class Exercise6_18 {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Password rules:\n"
            + "Password must have at least eight characters\n"
            + "Password must consist of only letters and digits\n"
            + "Password must contain at least two digits\n"
            + "Enter a password:");
    String pWT = sc.next();
    passWordIsValid(pWT);
    }
    public static void passWordIsValid (String password) {
        boolean passWordIsValid;

        if (password.length() < 8) {
            passWordIsValid = false;
            }
        else if (password.indexOf(0) == -1 && password.indexOf(1) == -1
                && password.indexOf(2) == -1 && password.indexOf(3) == -1
                && password.indexOf(4) == -1 && password.indexOf(5) == -1
                && password.indexOf(6) == -1 && password.indexOf(7) == -1
                && password.indexOf(8) == -1 && password.indexOf(9) == -1) {
                passWordIsValid = false;
        }
        else 
            passWordIsValid = true;     

        if (passWordIsValid == true) 
            System.out.print("Password is valid");
        else if (passWordIsValid == false) 
            System.out.println("Password is invalid");      
    }   
}

我正在尝试编写一个程序,提示用户输入一个至少8个字符长的密码,至少包含两位数字,并且只包含字母和数字但是当我输入时:password12表示密码无效。附:我知道我没有在方法中添加至少两位数的要求。

4 个答案:

答案 0 :(得分:1)

{{1}}

您希望使用此代码实现什么目标?它根本没有任何意义。您可能希望循环遍历字符串的每个字符,而不是计算每个字符(如果它是一个数字)(并且一旦您的计数> = 2,您就可以“断开”而不是循环)。

另外:不要将密码保存在字符串中......它们会在字符串池中保留很长时间,并且可以被恶意程序从内存中读取。您可以使用char []代替。

答案 1 :(得分:0)

您的算法不会检查是否至少有两位数字,并且不会检查其中是否只有可打印的字符和数字。您需要循环遍历所有字符并计算数字的数字,并确保每个字符都是数字或字母字符,而不是检查indexOf(),跟踪数字的数字。

答案 2 :(得分:0)

使用Regex验证密码。积极的Lookahead在验证字符串方面表现非常出色。

java中的示例

else if (is.array(a) && length(sz) > 2) {
    n <- dim(a)
    l <- length(n)
    for (i in 1:l) {
      s <- sz[i] %% n[i]
      #????
    }

}

 public static void main(String[] args) {
    String passwd = "aaZZa44@"; 
    String pattern = "^(?=.*[0-9].*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,}$";
  System.out.println(passwd.matches(pattern));

答案 3 :(得分:0)

如果您不想使用@Component({ selector: 'child', template: '<div>child state</div>', styleUrls: ['./index.component.css'] }),可以使用简单的<a routerLink="child">go to child</a><router-outlet>,您可以执行以下操作:

<div>some content</div><div>child state</div>

<强>测试

</router-outlet>