使用Java字符密码返回正确代码时出现问题
我遇到的问题是,当有人输入包含数字、大写和小写的密码时,程序仍然会说他们需要所有这些密码 我需要该程序列出所有的密码要求,如果他们没有得到满足 例如: A123456789aa返回:“您至少需要一个小写字母。请输入您的密码:” 它应该返回:“输入终止键”使用Java字符密码返回正确代码时出现问题,java,error-handling,passwords,Java,Error Handling,Passwords,我遇到的问题是,当有人输入包含数字、大写和小写的密码时,程序仍然会说他们需要所有这些密码 我需要该程序列出所有的密码要求,如果他们没有得到满足 例如: A123456789aa返回:“您至少需要一个小写字母。请输入您的密码:” 它应该返回:“输入终止键” publicstaticvoidmain(字符串[]args){ 扫描仪输入=新扫描仪(System.in); 布尔条件=真; while(条件){ System.out.print(“请输入密码:”); 字符串密码=input.nextLin
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(System.in);
布尔条件=真;
while(条件){
System.out.print(“请输入密码:”);
字符串密码=input.nextLine();
if(password.equals(“endofinput”)){
System.out.print(“您的密码有效”);条件=false;
}否则{
系统输出打印(密码检查);
条件=真;
}
}
input.close();
}
公共静态字符串密码检查(字符串密码){
字符串specialChars=“/*!@$%^&*()\”{}\u[]\ 124;\?/,.“+”;
if(password.length()<8){
return(“您至少需要8个字符。”);
}对于(int i=0;i
您的passCheck方法迭代所有字符,如果一个字符不能满足您的一个需求,则返回一个结果。另一种方法是假设输入无效,直到满足所有需求:
boolean foundUppercase = false;
boolean foundLowercase = false;
boolean foundDigits = false;
//Dont have to do the check for password as input for every letter in the word.
if (password.equals("password"))
return ("Your password cannot be password. ");
for (int i = 0; i < password.length(); i++) {
if (specialChars.contains(password.substring(i)))
//only in this case we can for sure say that the input is not valid
return ("Your password cannot contain special characters. ");
else if (Character.isUpperCase(password.charAt(i)))
foundUppercase=true;
else if (Character.isLowerCase(password.charAt(i)))
foundLowercase= true;
else if (Character.isDigit(password.charAt(i)))
foundDigits = true;
}
if (!foundUppercase) {
// uppercase letter missing
return ("You need at least one uppercase. ");
} else if (!foundLowercase) {
// lower case letter missing
return ("You need at least one lowercase. ");
} else if (!foundDigits) {
// missing digits
return ("You need at least one digit. ");
}
return "Enter termination key";
boolean foundUppercase=false;
boolean foundLowercase=false;
布尔数字=假;
//不必检查密码作为单词中每个字母的输入。
if(password.equals(“password”))
return(“您的密码不能是密码”);
对于(int i=0;i
您的passCheck方法迭代所有字符,如果一个字符不能满足您的一个需求,则返回一个结果。另一种方法是假设输入无效,直到满足所有需求:
boolean foundUppercase = false;
boolean foundLowercase = false;
boolean foundDigits = false;
//Dont have to do the check for password as input for every letter in the word.
if (password.equals("password"))
return ("Your password cannot be password. ");
for (int i = 0; i < password.length(); i++) {
if (specialChars.contains(password.substring(i)))
//only in this case we can for sure say that the input is not valid
return ("Your password cannot contain special characters. ");
else if (Character.isUpperCase(password.charAt(i)))
foundUppercase=true;
else if (Character.isLowerCase(password.charAt(i)))
foundLowercase= true;
else if (Character.isDigit(password.charAt(i)))
foundDigits = true;
}
if (!foundUppercase) {
// uppercase letter missing
return ("You need at least one uppercase. ");
} else if (!foundLowercase) {
// lower case letter missing
return ("You need at least one lowercase. ");
} else if (!foundDigits) {
// missing digits
return ("You need at least one digit. ");
}
return "Enter termination key";
boolean foundUppercase=false;
boolean foundLowercase=false;
布尔数字=假;
//不必检查密码作为单词中每个字母的输入。
if(password.equals(“password”))
return(“您的密码不能是密码”);
对于(int i=0;i
您可以使用此验证功能
public static String passCheck(String password) {
//String specialChars = "/*!@#$%^&*()\"{}_[]|\\?/<>,." + " ";
String expected_pattern = "^[a-zA-Z0-9]{8,}$";
String lowercase_pattern = "(.*)[a-z]+(.*)";
String uppercase_pattern = "(.*)[A-Z]+(.*)";
String digit_pattern = "(.*)[0-9]+(.*)";
if (password == null || password.length() < 8) return ("You need at least 8 characters. ");
if (password.toLowerCase().equals("password")) return ("Your password cannot be password. ");
if (!password.matches(lowercase_pattern)) return ("You need at least one lowercase. ");
if (!password.matches(uppercase_pattern)) return ("You need at least one uppercase. ");
if (!password.matches(digit_pattern)) return ("You need at least one digit. ");
if (!password.matches(expected_pattern)) return ("Your password cannot contain special characters. ");
return "Enter termination key";
}
公共静态字符串密码检查(字符串密码){
//字符串specialChars=“/*!@$%^&*()\”{}\u[]\ 124;\?/,.“+”;
字符串应为_pattern=“^[a-zA-Z0-9]{8,}$”;
字符串小写字母_pattern=“(.*)[a-z]+(.*);
字符串大写字母_pattern=“(.*)[A-Z]+(.*)”;
字符串数字_pattern=“(.[0-9]+(.*)”;
if(password==null | | password.length()<8)返回(“至少需要8个字符”);
if(password.toLowerCase().equals(“password”))返回(“您的密码不能是password”);
if(!password.matches(小写字母_模式))返回(“您至少需要一个小写字母”);
if(!password.matches(大写字母_模式))返回(“至少需要一个大写字母”);
如果(!password.matches(digit_pattern))返回(“您至少需要一个数字”);
if(!password.matches(预期的_模式))返回(“您的密码不能包含特殊字符”);
返回“输入终止键”;
}
您可以使用此验证功能
public static String passCheck(String password) {
//String specialChars = "/*!@#$%^&*()\"{}_[]|\\?/<>,." + " ";
String expected_pattern = "^[a-zA-Z0-9]{8,}$";
String lowercase_pattern = "(.*)[a-z]+(.*)";
String uppercase_pattern = "(.*)[A-Z]+(.*)";
String digit_pattern = "(.*)[0-9]+(.*)";
if (password == null || password.length() < 8) return ("You need at least 8 characters. ");
if (password.toLowerCase().equals("password")) return ("Your password cannot be password. ");
if (!password.matches(lowercase_pattern)) return ("You need at least one lowercase. ");
if (!password.matches(uppercase_pattern)) return ("You need at least one uppercase. ");
if (!password.matches(digit_pattern)) return ("You need at least one digit. ");
if (!password.matches(expected_pattern)) return ("Your password cannot contain special characters. ");
return "Enter termination key";
}
公共静态字符串密码检查(字符串密码){
//字符串specialChars=“/*!@$%^&*()\”{}\u[]\ 124;\?/,.“+”;
字符串应为_pattern=“^[a-zA-Z0-9]{8,}$”;
字符串小写字母形式=”(