我正在尝试创建一个Java程序,该程序检查输入的密码是否至少包含三个小写字母,2个大写字母和1个数字。这是我到目前为止的内容:
Scanner inputDevice = new Scanner(System.in);
boolean valid= false;
String password;
do{
System.out.print("Enter a password that contains at least 2 uppercase letters, three lowercase letters, and at least 1 digit: ");
password = inputDevice.nextLine();
boolean Upper;
boolean Lower;
boolean Digit;
int UpperCount=0;
int LowerCount=0;
int DigitCount=0;
for(int i=0; i<password.length(); i++){
if (Character.isUpperCase(password.charAt(i)));
UpperCount++;}
if (UpperCount<2)
Upper=false;
else
Upper=true;
for(int i=0; i<password.length(); i++){
if (Character.isLowerCase(password.charAt(i)));
LowerCount++;}
if (LowerCount<3)
Lower=false;
else
Lower=true;
for(int i=0; i<password.length(); i++){
if (Character.isDigit(password.charAt(i)));
DigitCount++;}
if (DigitCount<1)
Digit=false;
else
Digit=true;
if ((Digit == false) || (Upper == false) || (Lower == false))
System.out.print("The password did not have enough of the following:");
if (Upper == false)
System.out.print("\nuppercase letters");
if (Lower == false)
System.out.print("\nlowercase letters");
if (Digit ==false)
System.out.print("\ndigits");
if ((Digit==true)&&(Upper==true)&&(Lower==true))
valid=true;
}while(valid!=true);
System.out.println("Valid password");
我已经努力了一段时间。我遇到的一些问题是:
在这一点上,我真的很沮丧,可以寻求帮助。
摆脱分号。 if (Character.isUpperCase(password.charAt(i)));
应该只是if (Character.isUpperCase(password.charAt(i)))
,其他2个if语句应该相同。另外,作为可读性的旁注,我建议将方括号移到新行,以便更轻松地查看for循环的结束位置。本来我以为每个for循环都有3个if语句,但后来我在第一个if语句中看到了括号隐藏]