这是我第一次尝试提问,所以希望它能正确显示。基本上我需要程序做的是询问用户预设的帐号和密码,只允许他们尝试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");
}
}
}
答案 0 :(得分:2)
两个问题。
while(tries < 3)
应该是
while(tries < 3 && !successfulPassword)
您需要添加successPassword变量,这样您才能在第一时间正确使用该变量并继续输入密码。
==
和!=
来获得您期望的结果。您必须使用.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)