C# Консольное приложение для проверки ввода пароля
Следующий код имеет предустановленные пароли, которые пользователь должен ввести, чтобы продолжить код. Однако, когда введенные пароли (PASS1-PASS3) введены, код отправляется на выполнение независимо. Что мне нужно сделать для того, чтобы время распознало, что пароль правильный, чтобы он не попадал в строку неверного пароля?
// 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();
}
}
2 ответа
У вас неправильная логика, то есть что-то делает, затем проверяет некоторые условия, тогда как вы хотите проверить некоторые условия, а затем что-то сделать. Итак, следующий код:
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 ||
к логическим И &&
, это потому, что вы хотите проверить, не равен ли он всем им, а не только одному.
На стороне отметьте переменную Password
не используется и должен быть удален, так как это может привести к ошибкам опечатки в используемой переменной password
,
Попробуйте изменить "||" на "&&".
Он не может сравниться с ними сразу.