c#控制台应用程序密码输入检查器
本文关键字:检查 输入 密码 控制台 应用程序 | 更新日期: 2023-09-27 18:15:58
以下代码具有预设密码,用户必须输入密码才能继续执行代码。但是,当输入设置的密码(PASS1-PASS3)时,代码将进入do-while。我需要做些什么才能使while识别出密码是正确的,从而不会转到无效密码行?
// Program asks user to enter password
// If password is not "home", "lady" or "mouse"
// the user must re-enter the password
using System;
public class DebugFour1
{
public static void Main(String[] args)
{
const String PASS1 = "home";
const String PASS2 = "lady";
const String PASS3 = "mouse";
String password;
String Password;
Console.Write("Please enter your password ");
password = Console.ReadLine();
do
{
Console.WriteLine("Invalid password enter again: ");
password = Console.ReadLine();
} while (password != PASS1 || password != PASS2 || password != PASS3);
Console.WriteLine("Valid password");
Console.ReadKey();
}
}
你的逻辑是错误的,即做某事然后检查某些条件,而你想检查某些条件然后做某事。所以下面的代码:
do
{
Console.WriteLine("Invalid password enter again: ");
password = Console.ReadLine();
} while (password != PASS1 || password != PASS2 || password != PASS3);
应该读:
while (password != PASS1 && password != PASS2 && password != PASS3)
{
Console.WriteLine("Invalid password enter again: ");
password = Console.ReadLine();
}
注意,我还将逻辑or ||
更改为逻辑and &&
。这是因为您想要检查它是否不等于所有这些,而不仅仅是一个。
另一方面,变量Password
是未使用的,应该删除,因为它可能导致您使用的变量password
的打字错误。
尝试改变"| |",和"。
它不可能同时等于它们。