我是一个新手Java编程人员,我试图制作一个非常基本的用户名/密码程序。它的用户名部分工作正常,但当我得到密码时,它给我一些奇怪的问题。例如,当我们检查一个大写字母时,我发现它会发现一个很好的字母,但如果它没有,它会输出密码中每个字符的错误信息。它通过数字检查和长度检查来做到这一点。如果你们中的任何一个人可以向我解释这一点,而不是简单的,因为我还是Java新手,那真是太棒了。谢谢!Java ....为输入中的每个字符打印1个错误
do
{
if (count3 >0)
{
System.err.println("- At least 1 Uppercase");
System.err.println("- At least 1 number");
System.err.println("- At least 7 characters long.");
}
regPassword = input.nextLine();
regPasswordLen = regPassword.length();
for(int count = 0; count < regPasswordLen; count++)
{
if(Character.isUpperCase(regPassword.charAt(count)))
regPasswordUppercaseCheck = true;
else
{
System.err.println("Your password did not contain an Uppercase letter");
regPasswordUppercaseCheck = false;
}
if(regPassword.contains("1") || regPassword.contains("2") ||
regPassword.contains("3") || regPassword.contains("4") ||
regPassword.contains("5") || regPassword.contains("6") ||
regPassword.contains("7") || regPassword.contains("8") ||
regPassword.contains("9") || regPassword.contains("0"))
regPasswordNumCheck = true;
else
{
System.err.println("Your password did not contain at least 1 number.");
regPasswordNumCheck = false;
}
if (regPasswordLen >=7)
regPasswordLengthCheck = true;
else
{
System.err.println("Your password did not meet the minimum length requirements.");
regPasswordLengthCheck = false;
}
}
count3++;
}
while(!regPasswordUppercaseCheck || !regPasswordNumCheck || !regPasswordLengthCheck);
System.out.println("test");
您正在重置您的支票,并非所有这些条件同时为真。 –
你似乎试图一次做所有事情。我建议你将你的代码分解成独立解决密码要求的每个部分的部分。一次解决每个小问题。增加可读性,使代码更易于开发和维护。 –
为什么不简单地使用正则表达式而不是自己编码所有的检查? – Filip