为什么两个Java“ While循环”不能在同一代码中工作?

时间:2019-11-03 17:43:56

标签: java loops while-loop

我正在尝试编写要求用户正确输入两个密码才能成功的代码。每当我运行它时,程序都会在第一个代码成功执行后停止,从而跳过第二个密码要求。请纠正我正在做的任何错误,谢谢!

public static void main(String[] args) {

    boolean unlockPass = false;
    String password = "bond";
    boolean unlockCode = false;
    String code = "007";

    while (unlockPass == false) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter the password: ");
        String pass = scanner.next();

        boolean validPass = pass.equals(password);

        if (validPass) {
            System.out.println("Thank you");
            unlockPass = true;
        } else {
            System.out.println("UNAUTHORIZED");
        }
    }

    while (unlockCode = false) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter the code: ");
        String userCode = scanner.next();

        boolean validCode = userCode.equals(code);

        if (validCode) {

            System.out.println("Welcome Mr.Bond");
            unlockPass = true;
        } else {
            System.out.println("UNAUTHORIZED");
        }
    }
}

3 个答案:

答案 0 :(得分:1)

在第二次检查中,由于分配而不是相等检查:

while (unlockCode = false) {…

答案 1 :(得分:0)

不确定100%,但是错误可能出在行中

while (unlockCode = false)

您只有一个=,因此它实际上是将false分配给unlockCode。将其替换为==即可(可能)。

在这些情况下,调试代码非常有用,但我会告诉您,有时最明显的错误会被我们忽略:D。

答案 2 :(得分:0)

出于偏好,但我认为最好使用while (!unlockCode) {而不是while (unlockCode == false) {(您的问题所在的位置)。另外,您实际上也只需要一个Scanner对象。将 scanner 声明为类成员变量,或者至少在一系列的 while 循环上方声明。

Scanner scanner = new Scanner(System.in);
String password = "bond";
String code = "007";
boolean unlockPass = false;
boolean unlockCode = false;

while (!unlockPass) {
    System.out.println("Enter the password: ");
    unlockPass = scanner.next().equals(password);
    if (unlockPass) {
        System.out.println("Thank you");
    } else {
        System.out.println("UNAUTHORIZED");
    }
}

while (!unlockCode) {
    System.out.println("Enter the code: ");
    unlockCode = scanner.next().equals(code);
    if (unlockCode) {
        System.out.println("Welcome Mr.Bond");
    } else {
        System.out.println("UNAUTHORIZED");
    }
}