JAVA为输入中的每个字符打印一个错误

JAVA为输入中的每个字符打印一个错误,java,eclipse,if-statement,do-while,Java,Eclipse,If Statement,Do While,我是一名Java程序员新手,我正在尝试制作一个非常基本的用户名/密码程序。用户名部分工作正常,但当我使用密码时,它会给我带来一些奇怪的问题。我发现,例如,当它检查一个大写字母时,如果它发现一个大写字母,它就一切正常,但如果它没有,它就会为密码中的每个字符打印错误消息。它通过数字检查和长度检查来实现这一点。如果你们中的任何人能简单地向我解释这一点,因为我还是java新手,那就太棒了。谢谢 do { if (count3 >0) {

我是一名Java程序员新手,我正在尝试制作一个非常基本的用户名/密码程序。用户名部分工作正常,但当我使用密码时,它会给我带来一些奇怪的问题。我发现,例如,当它检查一个大写字母时,如果它发现一个大写字母,它就一切正常,但如果它没有,它就会为密码中的每个字符打印错误消息。它通过数字检查和长度检查来实现这一点。如果你们中的任何人能简单地向我解释这一点,因为我还是java新手,那就太棒了。谢谢

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");
do
{
如果(计数3>0)
{
System.err.println(“-至少1个大写”);
System.err.println(“-至少1个数字”);
System.err.println(“-至少7个字符长”);
}
regPassword=input.nextLine();
regPasswordLen=regPassword.length();
for(int count=0;count=7)
regPasswordLengthCheck=true;
其他的
{
System.err.println(“您的密码不符合最小长度要求。”);
regPasswordLengthCheck=false;
}
}
count3++;
}
而(!regPasswordUppercaseCheck | | |!regPasswordNumCheck | | |!regPasswordLengthCheck);
系统输出打印(“测试”);

您可以在程序中更改一些内容

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, but no more than 15 characters.");
    }
    regPassword = input.nextLine();
    regPasswordLen = regPassword.length();

    // this check only needs to happen once per password, no need to check it in the for loop. You also specified that the length should not exceed 15 characters, so I threw that in as well
    if (regPasswordLen < 7 || regPasswordLen > 15)
         System.err.println("Your password did not meet the length requirements.");
    // by default, we set these flags to false, and only make them true if the requirements are satisfied
    regPasswordUppercaseCheck = false;
    regPasswordNumCheck = false;

    for(int count = 0; count < regPasswordLen; count++)
    {
            // store the value of regPassword.charAt(count) in a local variable for reusability
            char current = regPassword.charAt(count);

            if(Character.isUpperCase(current))
                regPasswordUppercaseCheck = true;

            // checks if the character is a digit or not
            if(current >= '0' && current <= '9')
                regPasswordNumCheck = true;
    }

    if (!regPasswordNumCheck)
        System.err.println("Your password did not contain at least 1 number.");
    if (!regPasswordUppercaseCheck)
        System.err.println("Your password did not contain an Uppercase letter");

count3++;
}
while(!regPasswordUppercaseCheck || !regPasswordNumCheck || !regPasswordLengthCheck);
do
{
如果(计数3>0)
{
System.err.println(“-至少1个大写”);
System.err.println(“-至少1个数字”);
System.err.println(“-至少7个字符长,但不超过15个字符”);
}
regPassword=input.nextLine();
regPasswordLen=regPassword.length();
//这个检查只需要对每个密码执行一次,不需要在for循环中进行检查。您还指定长度不应超过15个字符,所以我也加入了这个检查
if(regPasswordLen<7 | | regPasswordLen>15)
System.err.println(“您的密码不符合长度要求。”);
//默认情况下,我们将这些标志设置为false,并且只有在满足需求时才将其设置为true
regPasswordUppercaseCheck=false;
regPasswordNumCheck=false;
for(int count=0;count如果(current>='0'&¤t您的大写检查没有正确完成,因为循环
for(int count=0;count 0){
System.err.println(“-至少1个大写”);
System.err.println(“-至少1个数字”);
System.err
.println(“-至少7个字符长,但不超过15个字符”);
}
regPassword=input.nextLine();
regPasswordLen=regPassword.length();
for(int count=0;count=7)
regPasswordLengthCheck=true;
否则{
System.err
.println(“您的密码不符合最小长度要求”);
regPasswordLengthCheck=false;
}
count3++;
}而(!regPasswordUppercaseCheck | |!regPasswordNumCheck
||!regPasswordLengthCheck);
系统输出打印(“测试”);
<
for (int count = 0; count < regPasswordLen; count++) {
                if (Character.isUpperCase(regPassword.charAt(count)))
                    {regPasswordUppercaseCheck = true;break;}
            }
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, but no more than 15 characters.");
            }
            regPassword = input.nextLine();
            regPasswordLen = regPassword.length();
            for (int count = 0; count < regPasswordLen; count++) {
                if (Character.isUpperCase(regPassword.charAt(count)))
                    {regPasswordUppercaseCheck = true;break;}
            }
                if(regPasswordUppercaseCheck==false){
                    System.err
                            .println("Your password did not contain an Uppercase letter");
                    regPasswordUppercaseCheck = false;
                }

                    regPasswordNumCheck = 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");

                if(regPasswordNumCheck==false) {
                    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");