我坚持的一个练习是使用 do-while 循环。我应该提示用户输入密码,然后再次重新输入密码。如果这些密码匹配,那么他们将获得访问权限。如果两个密码不匹配,那么我应该提示用户再输入密码 3 次。第三次之后,它会告诉他们访问被拒绝。我很难区分 do-while 循环中的内容。
这就是我所拥有的(更新)...仍然困惑为什么它没有终止:
import java.util.Scanner;
public class PasswordChecker{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String password1;
String password2;
int i = 1;
do {
System.out.println("Please enter your password");
password1 = sc.nextLine();
System.out.println("Please re-enter your password");
password2 = sc.nextLine();
} while(!password1.equals(password2) && i<=3);
i++;
}
}
最佳答案
你的 = 比较是错误的。如果要确保两个字符串具有相同的值,则需要使用 String equals 方法。 '=' 是赋值运算符 if (a=b) {}
无法编译,“==”检查两个变量是否指向同一对象。 if (a==b) {}
并不总是成功(参见下面的示例)。 String equals 方法始终查看字符串表示的实际值。
String a = "1";
String b = "12".substring(0,1);
a == b // false
a.equals(b) // true
现在排除这个问题 - 有很多方法可以获取退出条件。如果您想在一条语句中完成所有操作,您可以更改 i<=3
在你的情况下i++ <= 3
。我的偏好是将这两个条件分开
do {
...
if (password.equals(password2)) {
break;
}
} while (i++ <= 3);
关于java - 使用 do-while 循环,尝试 3 次后将终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26247375/