我被分配的程序具有以下规则:
规则:
2。在['a','z']范围内必须有> = 2个字符
3。在['A','Z']范围内必须有> = 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);
}
}
答案 0 :(得分:1)
恕我直言,我们可以使用正则表达式来进行密码检查,而不用编写Java代码:
^(?=.*[A-Z].*[A-Z])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z]).{6,10}$
在此处检查表达式是否满足您的要求:
a Ruby regular expression editor
然后可以在Matcher
包中使用Pattern
和java.util.regex
来使用正则表达式
正则表达式的优点:
可以在各种语言中重复使用。说到网站开发,我们可以同时使用客户端检查和服务器端检查,我们不为javascript和java-backend编写检查器,而是在双方都使用正则表达式。