输入正确答案后无法获取代码终止

时间:2014-11-24 03:54:33

标签: java

编写一个名为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);
 }
}

2 个答案:

答案 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++;
        }
    }
}