简单的密码检查
Simple Password Check
刚开始学习 java,我正在尝试编写一个简单的密码检查代码,如果您输入的密码不正确,它会尝试。问题是当我输入不正确的密码,然后输入正确的密码时,它仍然说是错误的密码。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Tell us the Password");
while(true) {
String password = scanner.nextLine();
if (password.equalsIgnoreCase("Happy")) {
System.out.println("Correct password");
break;
}
else {
for (int i =6; i>0;i--) {
System.out.println("Incorrect password ");
System.out.println(+ i + " Trys left");
password= scanner.nextLine();
}
}
System.out.println("No more tries");
System.out.println("Program exits");
break;
}
}
我想让程序检查密码是否正确。
一旦您输入了错误的密码,代码流就会卡在 for 循环中并保留在那里进行可用的迭代,不会与输入的密码进行比较,因此您需要修改流程。根据您发布的初始代码,一种方法是
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Tell us the Password");
int tryCountForFailure = 6;
while (true) {
String password = scanner.nextLine();
if (password.equalsIgnoreCase("Happy")) {
System.out.println("Correct password");
break;
} else {
System.out.println("Incorrect password ");
System.out.println(tryCountForFailure + " Trys left");
tryCountForFailure--;
if (tryCountForFailure == 0) {
System.out.println("No more trys");
System.out.println("Program exits");
break;
}
}
}
scanner.close();
}
在您的代码中,循环卡在了 Else 语句中。让我们运行通过逻辑。
程序要求输入密码并将其存储在密码字符串中。
程序检查密码是否正确,如果正确则程序停止,否则继续执行 else 语句。
程序使用for语句运行这个代码块6次:
System.out.println("Incorrect password ");
System.out.println(+ i + " Trys left");
password = scanner.nextLine();
问题是即使您在密码字段中输入了正确的字符串,它也永远不会检查该值是否正确。您最好重构代码以使逻辑合理。让我们 运行 了解应该发生的事情。
- 程序定义了一个名为
count
的变量并将其设置为 0。
- 程序使用 while 循环询问计数是否小于 6。
- 程序使用扫描仪接收密码字符串。
- 程序检查该密码字符串是否等于正确的密码,如果是,则中断,
- 如果它不等于正确的密码,它会在
count
上加一
Scanner scanner = new Scanner(System.in);
System.out.println("Tell us the Password");
String password = scanner.nextLine();
if (password.equalsIgnoreCase("Happy")) {
System.out.println("Correct password");
break;
} else {
count++
}
}
刚开始学习 java,我正在尝试编写一个简单的密码检查代码,如果您输入的密码不正确,它会尝试。问题是当我输入不正确的密码,然后输入正确的密码时,它仍然说是错误的密码。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Tell us the Password");
while(true) {
String password = scanner.nextLine();
if (password.equalsIgnoreCase("Happy")) {
System.out.println("Correct password");
break;
}
else {
for (int i =6; i>0;i--) {
System.out.println("Incorrect password ");
System.out.println(+ i + " Trys left");
password= scanner.nextLine();
}
}
System.out.println("No more tries");
System.out.println("Program exits");
break;
}
}
我想让程序检查密码是否正确。
一旦您输入了错误的密码,代码流就会卡在 for 循环中并保留在那里进行可用的迭代,不会与输入的密码进行比较,因此您需要修改流程。根据您发布的初始代码,一种方法是
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Tell us the Password");
int tryCountForFailure = 6;
while (true) {
String password = scanner.nextLine();
if (password.equalsIgnoreCase("Happy")) {
System.out.println("Correct password");
break;
} else {
System.out.println("Incorrect password ");
System.out.println(tryCountForFailure + " Trys left");
tryCountForFailure--;
if (tryCountForFailure == 0) {
System.out.println("No more trys");
System.out.println("Program exits");
break;
}
}
}
scanner.close();
}
在您的代码中,循环卡在了 Else 语句中。让我们运行通过逻辑。
程序要求输入密码并将其存储在密码字符串中。
程序检查密码是否正确,如果正确则程序停止,否则继续执行 else 语句。
程序使用for语句运行这个代码块6次:
System.out.println("Incorrect password "); System.out.println(+ i + " Trys left"); password = scanner.nextLine();
问题是即使您在密码字段中输入了正确的字符串,它也永远不会检查该值是否正确。您最好重构代码以使逻辑合理。让我们 运行 了解应该发生的事情。
- 程序定义了一个名为
count
的变量并将其设置为 0。 - 程序使用 while 循环询问计数是否小于 6。
- 程序使用扫描仪接收密码字符串。
- 程序检查该密码字符串是否等于正确的密码,如果是,则中断,
- 如果它不等于正确的密码,它会在
count
上加一
Scanner scanner = new Scanner(System.in);
System.out.println("Tell us the Password");
String password = scanner.nextLine();
if (password.equalsIgnoreCase("Happy")) {
System.out.println("Correct password");
break;
} else {
count++
}
}