Почему мой код принимает ввод, но все еще печатает ошибку? - PullRequest
0 голосов
/ 14 марта 2020

Немного предыстории: это система входа в систему, она проверяет ввод внутри текстового файла. Для этого я использую list <> и foreach l oop. И если он соответствует сохраненным строкам, он будет действительным. Итак, если это не так, распечатайте: недействительное сообщение.

В этом текстовом документе есть две строки, и программа читает все строки, как и должно, и это действительно так c. Первая строка не выводит «недопустимое сообщение», но вторая строка делает и все еще является приемлемой.

string containDetails = firstName + " " + lastName + " " + password;
        List<string> lines = File.ReadAllLines (@"D:\LoginSystemFolder\UserDetailFolder\Users.txt").ToList ();
        foreach (var l in lines) {
            if (l.Equals (containDetails)) {
                Console.WriteLine("Login was a success!");
                ls.MainMenu ();
            }
            else if(!l.Equals(containDetails) {
                Console.WriteLine ("The login details are not valid. Are you sure they're correct?");

            }
        }

1 Ответ

2 голосов
/ 14 марта 2020

Вы должны выйти из своего l oop, когда он будет найден, и также было бы лучше просто переместить ваш следующий шаг наружу. Кроме того, в вашем коде отсутствовала скобка в последнем операторе If. Обратите внимание, как я использую фактические строки в моем примере, чтобы было более ясно, что ожидается ... это помогает людям лучше понять проблему. Отладка вашего кода легко покажет вам, где ваши логи c не работают.

string containDetails = "Mark Morgan 123";
List<string> lines = new List<string>() {"Mark Morgan 123", "John Snow 456"};
bool successfulLogIn = false;
foreach (var l in lines) {
    if (l.Equals (containDetails)) {
        successfulLogIn = true;
        break; //exit loop
       // ls.MainMenu (); MOVING THIS OUTSIDE OF LOOP
    }
}

if(successfulLogIn){    
     Console.WriteLine("Login was a success!");
     // ls.MainMenu (); //call this here
}else{
    Console.WriteLine ("The login details are not valid. Are you sure they're correct?");
}
...