【问题标题】:More Efficient Password Checker [closed]更高效的密码检查器 [关闭]
【发布时间】:2019-05-15 05:30:21
【问题描述】:

我被分配的程序有以下规则:

规则:

  1. 字符数必须在 [6, 10] 中

2. ['a', 'z'] 范围内必须有 >= 2 个字符

3. ['A', 'Z'] 范围内必须有 >= 2 个字符

  1. 在 ['0', '9'] 范围内必须有 >= 2 个字符

例如,pw1("aaBC09-+") 应该返回 true,而 pw1("aabC09-+") 应该返回 false。

我已附上我的代码,但我可以使用更高效/更简洁的代码吗?

import java.util.*;

public class PassChecker2 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

// Prompt User to Enter String
System.out.print("Enter Password: ");

// Grab User Generated String
String pw = input.next();

// Pass String to be Checked
boolean valid_pw = checkPW(pw);

if(valid_pw)
  System.out.println(pw + " is a valid password!");
else
  System.out.println(pw + " is not a valid password!");

}

public static boolean checkPW(String pw)
{

int pwLowerCase = 0,
     pwUpperCase = 0,
     pwNumber = 0;

// Return False if PW is too Small / Large
if(!(pw.length() >= 2 && pw.length() <= 10))
    return false;

for(int position = 0; position < pw.length(); ++position)
{

    char character = pw.charAt(position);

    if(character >= 'a' && character <= 'z')
        ++pwLowerCase;
    else if(character >= 'A' && character <= 'Z')
        ++pwUpperCase;
    else if(character >= '1' && character <= '9')
        ++pwNumber;

}

return (pwLowerCase >= 2 && pwUpperCase >= 2 && pwNumber >= 2);

}

}

【问题讨论】:

  • 我要在其他人之前说这个 - 忽略任何告诉您将此问题带到任何其他站点的人。无视他们;那些 cmets 是噪音。
  • 您似乎没有将0 算作数字。除此之外,它看起来还不错。
  • 您可能会发现Reference - Password Validation 很有用。

标签: java password-checker


【解决方案1】:

恕我直言,我们可以使用正则表达式进行密码检查,而不是编写 java 代码:

^(?=.*[A-Z].*[A-Z])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z]).{6,10}$

在这里检查表达式是否满足您的要求:

a Ruby regular expression editor

然后您可以在java.util.regex 包中使用MatcherPattern 来使用正则表达式

正则表达式的优势:

可以在不同的语言中重复使用。假设对于网站开发,我们可能同时使用客户端检查和服务器端检查,我们不会为 javascript 和 java-backend 编写检查器,而是在双方都使用正则表达式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 2012-05-31
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多