简单的密码检查

Simple Password Check

刚开始学习 java,我正在尝试编写一个简单的密码检查代码,如果您输入的密码不正确,它会尝试。问题是当我输入不正确的密码,然后输入正确的密码时,它仍然说是错误的密码。

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Tell us the Password");
    while(true) {
        String password = scanner.nextLine();
        if (password.equalsIgnoreCase("Happy")) {
            System.out.println("Correct password");
            break;
        }
        else {
            for (int i =6; i>0;i--) {
                System.out.println("Incorrect password ");
                System.out.println(+ i + " Trys left");
                password= scanner.nextLine();
            }
        }
        System.out.println("No more tries");
        System.out.println("Program exits");
        break;
    }
}

我想让程序检查密码是否正确。

一旦您输入了错误的密码,代码流就会卡在 for 循环中并保留在那里进行可用的迭代,不会与输入的密码进行比较,因此您需要修改流程。根据您发布的初始代码,一种方法是

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Tell us the Password");
        int tryCountForFailure = 6;

        while (true) {
            String password = scanner.nextLine();
            if (password.equalsIgnoreCase("Happy")) {
                System.out.println("Correct password");
                break;
            } else {
                System.out.println("Incorrect password ");
                System.out.println(tryCountForFailure + " Trys left");
                tryCountForFailure--;
                if (tryCountForFailure == 0) {
                    System.out.println("No more trys");
                    System.out.println("Program exits");
                    break;
                }
            }
        }
        scanner.close();
    }

在您的代码中,循环卡在了 Else 语句中。让我们运行通过逻辑。

  1. 程序要求输入密码并将其存储在密码字符串中。

  2. 程序检查密码是否正确,如果正确则程序停止,否则继续执行 else 语句。

  3. 程序使用for语句运行这个代码块6次:

        System.out.println("Incorrect password ");
        System.out.println(+ i + " Trys left");
        password = scanner.nextLine();
    

问题是即使您在密码字段中输入了正确的字符串,它也永远不会检查该值是否正确。您最好重构代码以使逻辑合理。让我们 运行 了解应该发生的事情。

  1. 程序定义了一个名为 count 的变量并将其设置为 0。
  2. 程序使用 while 循环询问计数是否小于 6。
  3. 程序使用扫描仪接收密码字符串。
  4. 程序检查该密码字符串是否等于正确的密码,如果是,则中断,
  5. 如果它不等于正确的密码,它会在 count
  6. 上加一
     Scanner scanner = new Scanner(System.in); 
     System.out.println("Tell us the Password"); 
     String password = scanner.nextLine(); 
        if (password.equalsIgnoreCase("Happy")) { 
                System.out.println("Correct password"); 
                break; 
            } else { 
                count++ 
                }
           }