任务描述:
用户密码常常要求密码的长度大于等于6个字符,且必须包含大小写字母和数字。请写 一个函数validatePassword 来验证密码是否有效
解决思路:
输入密码为字符串,函数 validatePassword 对字符串进行 for 循环其中的每个的字符进行三个条件的判断,或者用正则表达式也行
代码示例:
package a4_2024_06;
import java.util.Scanner;
public class j240630_2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("输入一个密码字符串:");
String password = scanner.nextLine();
System.out.print("字符串 " + password + " 是否有效密码:" + validatePassword(password));
}
// 使用for循环遍历字符串,判断是否包含大写字母、小写字母和数字
public static String validatePassword(String password) {
// 验证密码长度是否大于或等于6
if(password.length() < 6) {
return "否";
}
// 验证密码是否包含大写字母,小写字母和数字
boolean hasUpper = false;
boolean hasLower = false;
boolean hasDigit = false;
for(char c : password.toCharArray()) {
if(Character.isUpperCase(c)) {
hasUpper = true;
} else if(Character.isLowerCase(c)) {
hasLower = true;
} else if(Character.isDigit(c)) {
hasDigit = true;
}
if(hasUpper && hasLower && hasDigit) {
return "是";
}
}
return "否";
}
// 使用正则表达式验证密码长度是否大于或等于6
/*public static String validatePassword(String password) {
if(password.length() < 6) {
return "否";
}
// 使用正则表达式验证密码是否包含大写字母、小写字母和数字
String regex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d]{6,}$";
return password.matches(regex) ? "是" : "否";
}*/
}