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