编写一个名为PasswordChecker的程序,执行以下操作: 1.提示用户输入密码 2.提示用户输入密码 3.检查以确保两个密码条目相同 4.(对于前三次尝试)重复步骤1到3,直到密码正确输入两次。 5.第三次尝试后,如果用户没有正确输入密码,程序需要显示一条信息性消息,表明用户帐户已被暂停。
我的代码:
import java.util.Scanner;
public class passwordChecker{
public static void main(String [] args){
String pw1;
String pw2;
int count=0;
Scanner keyboard = new Scanner(System.in);
do{
System.out.println("Enter the password:");
pw1 = keyboard.nextLine();
System.out.println("Renter the password:");
pw2 = keyboard.nextLine();
count++;
if(pw1.equals(pw2))
System.out.println("Correct");
else if(count>=3)
System.out.println("Account is suspended");
while(pw1==pw2||count>3);
}
}
答案 0 :(得分:4)
您似乎缺少一个右大括号(您打开do
但不要在while
之前关闭)。你的第一个条件应该是count < 3
,我认为你想循环,而两个String
(s)不相等。像,
do {
System.out.println("Enter the password:");
pw1 = keyboard.nextLine();
System.out.println("Renter the password:");
pw2 = keyboard.nextLine();
count++;
if (pw1.equals(pw2)) {
System.out.println("Correct");
} else if (count >= 3) {
System.out.println("Account is suspended");
}
} while (count < 3 && !pw1.equals(pw2));
修改强>
您不对==
类型使用!=
(或Object
)的原因是它仅测试引用相等性。您希望测试值的相等性(这些String
(s)来自不同的行,因此它们不会通过引用进行相等比较。)
答案 1 :(得分:0)
只需
public class PasswordChecker {
public static void main(String[] args) {
String pw1;
String pw2;
int count = 0;
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the password:");
pw1 = keyboard.nextLine();
while(true){
System.out.println("Renter the password:");
pw2 = keyboard.nextLine();
if (pw1.equals(pw2)) {
System.out.println("Correct");
break;
} else if(count == 3){
System.out.println("Account is suspended");
break;
}
count++;
}
}
}