大家帮我改下这段代码!
- C# code
public void login() { int[] sql = new int[5]{123,456,789,159,753}; Console.WriteLine("欢迎使用建设银行取款机"); Console.WriteLine("下面请输入您的密码"); int PassWord= int.Parse(Console.ReadLine()); //验证密码 for (int i = 0; i < sql.Length; i++) { if (PassWord == sql[i]) { Console.WriteLine("密码正确"); break; } else { Console.WriteLine("密码输入有错,请重新输入"); } }
我知道是循环那里出问题 如果是sql[0]的话就提示正确,之后如果输入像456的话先要验证sql[0]就会说密码错误,然后才验证sql[1],此时才认为是密码正确。这样就出现了2个结果,该怎么改进了???
[解决办法]
加个变量,利用变量来判断密码是否正确。
public void login()
{
int[] sql = new int[5] { 123, 456, 789, 159, 753 };
Console.WriteLine("欢迎使用建设银行取款机");
Console.WriteLine("下面请输入您的密码");
int PassWord = int.Parse(Console.ReadLine());
bool isRight = false;
//验证密码
for (int i = 0; i < sql.Length; i++)
{
if (PassWord == sql[i])
{
isRight = true;
break;
}
}
if (isRight)
{
Console.WriteLine("密码正确");
}
else
{
Console.WriteLine("密码输入有错,请重新输入");
}
}
[解决办法]
- C# code
public void login() { int[] sql = new int[5] { 123, 456, 789, 159, 753 }; Console.WriteLine("欢迎使用建设银行取款机"); Console.WriteLine("下面请输入您的密码"); int PassWord = int.Parse(Console.ReadLine()); //验证密码 if (sql.ToList().Contains(PassWord)) { Console.WriteLine("密码正确"); } else { Console.WriteLine("密码输入有错,请重新输入"); } }
[解决办法]
static void Main(string[] args)
{
int[] sql = new int[5] { 123, 456, 789, 159, 753 };
Console.WriteLine("欢迎使用建设银行取款机");
Console.WriteLine("下面请输入您的密码");
int PassWord = int.Parse(Console.ReadLine());
//验证密码
int flag = 0;
for (int i = 0; i < sql.Length; i++)
{
if (PassWord == sql[i])
{
Console.WriteLine("密码正确");
flag = 1;
break;
}
else
{
//Console.WriteLine("密码输入有错,请重新输入");
continue;
}
}
if (flag == 0)
{
Console.WriteLine("密码输入有错,请重新输入");
}
}
[解决办法]
bool bPass = false;
for (int i = 0; i < sql.Length; i++)
{
if (PassWord == sql[i])
{
bPass = true;
Console.WriteLine( "密码正确 ");
break;
}
}
if (!bPass)
{
Console.WriteLine( "密码输入有错,请重新输入 ");
//此处是让程序退出还是重新回到程序开始由你确定
}
[解决办法]
else
{
if(i==sql.Length-1)
Console.WriteLine("密码输入有错,请重新输入");
}
[解决办法]
除了楼上的方法,你也可以将else换成一个判断,判断i是否已经游走到循环末端了,如果是话就输出密码错误咯