密码提示并从if语句调用方法

时间:2013-12-09 18:22:33

标签: java methods

这是我第一次尝试提问,所以希望它能正确显示。基本上我需要程序做的是询问用户预设的帐号和密码,只允许他们尝试3次。然后我想在满足两个要求时调用另一种方法,这样我就可以继续使用该程序。我遇到的第一个问题是,当我输入正确的密码时,它仍然显示为不正确,我不知道为什么,那么我想知道我是否在if语句中正确调用了该方法。感谢。

import java.util.Scanner;


public class Part4 {

public static void main(String[] args) 
{

    String password = "password", passwordattempt = null;
    int accnum = 123456789, acctry = 0, tries = 0;
    Scanner input = new Scanner (System.in);


    while (acctry != accnum){
    System.out.println("\nPlease enter your account number");
    acctry = input.nextInt();

        if (acctry != accnum)
            System.out.print("That number is incorrect. Please try again.");

        else
            if (acctry == accnum)
            {


                while (tries < 3)
                {


                    System.out.println("\nPlease enter password");
                    passwordattempt = input.next();


                    if (passwordattempt != password){
                        System.out.print("That password is incorrect");
                        tries++;
                        }
                    else
                        if (passwordattempt == password){
                            System.out.print("That is correct");
                            AccountDetails.Details(args);
                            }
                }

                System.out.print("\nYou have exceeded the ammount of tries");

            }               


        }

}

public static class AccountDetails {
    private static void Details(String[] args){
        System.out.print("it works");
    }
}

}

2 个答案:

答案 0 :(得分:2)

两个问题。

  • 1:无论是否成功,您都在执行while循环。

while(tries < 3)

应该是

while(tries < 3 && !successfulPassword)

您需要添加successPassword变量,这样您才能在第一时间正确使用该变量并继续输入密码。

  • 2:你对字符串的比较是非常的,嗯,是,错。有两件事引起了我的注意。首先,您无法使用==!=来获得您期望的结果。您必须使用.equals()。其次,你不需要像对待人类一样重复相反的条款。例如,我告诉我的女儿&#34;如果你吃了晚餐,那么你可能会吃饼干。否则,如果你不吃晚餐,那么你可能没有饼干。&#34;对于电脑来说,如果你不吃晚餐,你就不需要这么做了#34;。它保证是真的(因为你无论如何都在其他区块中)而且它只会使它变得混乱。这就是

if(passwordAttempt.equals(password) {
    successfulPassword = true;
} else {
    tries++;
}

答案 1 :(得分:0)

在Java语言中,字符串是对象,因此使用“==”进行比较是通过引用进行测试,而不是通过相等进行测试。

我相信你要找的是

if (passwordattempt.equals(password)) {

点击此处了解更多信息:

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#equals(java.lang.Object)