我有一个问题,需要至少2个大写字母,至少2个小写字母和2个数字。
这是确切的问题:
编写一个应用程序,提示用户输入包含至少两个大写字母,至少两个小写字母和至少两个数字的密码。输入密码后,显示一条消息,指示用户是否成功或用户未成功的原因。
例如,如果用户输入“密码”,您的程序应输出: 您的密码无效,原因如下: 大写字母 数字
如果用户输入“P4SSw0rd”,您的程序应输出: 有效密码
到目前为止,这是我的编码,我遇到了包含输出行的问题。例如,如果某人没有2个大写字母且没有2个字母。写1个字母时,它不包括输出中的两个失败。
import java.util.Scanner;
public class ValidatePassword {
public static void main(String[] args) {
String inputPassword;
Scanner input = new Scanner(System.in);
System.out.print("Password: ");
inputPassword = input.next();
System.out.println(PassCheck(inputPassword));
System.out.println("");
}
public static String PassCheck(String Password) {
String result = "Valid Password";
int length = 0;
int numCount = 0;
int capCount = 0;
for (int x = 0; x < Password.length(); x++) {
if ((Password.charAt(x) >= 47 && Password.charAt(x) <= 58) || (Password.charAt(x) >= 64 && Password.charAt(x) <= 91) ||
(Password.charAt(x) >= 97 && Password.charAt(x) <= 122)) {
} else {
result = "Password Contains Invalid Character!";
}
if ((Password.charAt(x) > 47 && Password.charAt(x) < 58)) {
numCount++;
}
if ((Password.charAt(x) > 64 && Password.charAt(x) < 91)) {
capCount++;
}
length = (x + 1);
}
if (numCount < 2) {
result = "Not Enough Numbers in Password!";
}
if (capCount < 2) {
result = "Not Enough Capital Letters in Password!";
}
if (length < 2) {
result = "Password is Too Short!";
}
return (result);
}
}
答案 0 :(得分:1)
如果我理解你想要做什么,当你输入例如“密码”时,你没有2个大写字母和2个数字,所以你的输出应该是这样的: “密码中没有足够的数字!密码中没有足够的大写字母!”。 我建议2个解决方案:
如果要将一个String添加到另一个使用+,因为您用另一个覆盖了第一个结果值。但这不是最佳解决方案,因为每次向String添加值时,都会在String池上创建新的String。更多信息: https://stackoverflow.com/a/1553110/6003541
result += "Password is Too Short!";
或
result = result + "Password is Too Short!";
我建议使用StringBuilder。使用方法“append”添加结果,最后返回StringBuilder对象的toString()值。
StringBuilder sb = new StringBuilder();
if (numCount < 2) {
sb.append("Not Enough Numbers in Password!");
sb.append(System.getProperty("line.separator"));
}
if (capCount < 2) {
sb.append("Not Enough Capital Letters in Password!");
sb.append(System.getProperty("line.separator"));
}
if (length < 2) {
sb.append("Password is Too Short!");
}
return sb.toString();