Java密码搜索字符
我必须创建一个程序,创建一个有效的密码,这个密码的要求是:必须有5到8个字符,必须包含一个数字,一个大写字母和一个小写字母。它也必须是一个类和一个测试程序的形式,但现在我只是想让程序正常工作。现在,长度检查和大写检查都很好,但数字检查给我带来了问题。每次我输入一个数字,密码都是无效的。这是我到目前为止得到的
import java.util.Scanner;
public class pass {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String password;
int length;
boolean hasUppercase;
boolean hasLowercase;
boolean hasNum;
do {
System.out.println("Password must be between 5 and 8 characters
and must contain a lowercase letter, an uppercase letter, and a
number");
System.out.println("Please enter your password: ");
password = sc.next();
length = password.length();
hasUppercase = !password.equals(password.toLowerCase());
hasLowercase = !password.equals(password.toUpperCase());
hasNum = !password.matches(".*\\d+.*");
if(length >= 5 & length <= 8 ) {
if(hasUppercase & hasLowercase & hasNum) {
System.out.print("Your password has been set");
}
}
else {
System.out.print("Password must be between 5 and 8
characters and must contain a lowercase letter, an uppercase
letter, and a number");
}
}
while(length <= 5 | length >= 8 | !hasUppercase | !hasLowercase |
!hasNum);
}
}
# 1 楼答案
hasNum = !password.matches(".*\\d+.*");
表示“如果字符串不包含数字,则hasNum=true”-只需删除!
我还简化了结束条件——一个布尔“passwordOk”,而不是再次检查所有5个条件
# 2 楼答案
编辑了你的程序。内联记录的更改
}
# 3 楼答案
您可以让您的生活更轻松,只需使用正则表达式即可:
Demo