C# 为什么我的代码接受输入但仍然打印出错误?

C# 为什么我的代码接受输入但仍然打印出错误?,c#,console-application,C#,Console Application,一些背景:这是一个登录系统,它检查文本文件中的输入。我对这个循环和foreach循环使用list。如果它与保存的行匹配,那么它将是有效的。因此,如果不是,则打印出:无效消息 此文本文档中有两行,程序按其应该的方式读取所有行,并且它是有效的,等等。第一行不打印“无效消息”,但第二行打印,并且仍然可以接受 string containDetails = firstName + " " + lastName + " " + password; List<string> li

一些背景:这是一个登录系统,它检查文本文件中的输入。我对这个循环和foreach循环使用list。如果它与保存的行匹配,那么它将是有效的。因此,如果不是,则打印出:无效消息

此文本文档中有两行,程序按其应该的方式读取所有行,并且它是有效的,等等。第一行不打印“无效消息”,但第二行打印,并且仍然可以接受

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?");

            }
        }
string containDetails=firstName+“”+lastName+“”+密码;
列表行=File.ReadAllLines(@“D:\LoginSystemFolder\UserDetailFolder\Users.txt”).ToList();
foreach(行中的变量l){
如果(l.等于(包含详细信息)){
WriteLine(“登录成功!”);
ls.main菜单();
}
如果(!l.Equals)(包含详细信息),则为else{
Console.WriteLine(“登录详细信息无效。确实正确吗?”);
}
}

找到循环后,您应该退出循环,并且最好将下一步移到外部。此外,您的代码在最后一个
If
语句中缺少括号。请注意,我在示例中如何使用实际字符串,以便更清楚预期的内容……这有助于人们更好地理解问题。调试您的代码将很容易地向您显示您的逻辑不起作用的地方

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?");
}
string containDetails=“Mark Morgan 123”;
列表行=新列表(){“Mark Morgan 123”,“John Snow 456”};
bool successfulLogIn=false;
foreach(行中的变量l){
如果(l.等于(包含详细信息)){
successfulLogIn=true;
break;//退出循环
//ls.main菜单();将其移出循环
}
}
如果(成功登录){
WriteLine(“登录成功!”);
//ls.MainMenu();//在这里调用
}否则{
Console.WriteLine(“登录详细信息无效。确实正确吗?”);
}

找到循环后,您应该退出循环,并且最好将下一步移到外部。此外,您的代码在最后一个
If
语句中缺少括号。请注意,我在示例中如何使用实际字符串,以便更清楚预期的内容……这有助于人们更好地理解问题。调试您的代码将很容易地向您显示您的逻辑不起作用的地方

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?");
}
string containDetails=“Mark Morgan 123”;
列表行=新列表(){“Mark Morgan 123”,“John Snow 456”};
bool successfulLogIn=false;
foreach(行中的变量l){
如果(l.等于(包含详细信息)){
successfulLogIn=true;
break;//退出循环
//ls.main菜单();将其移出循环
}
}
如果(成功登录){
WriteLine(“登录成功!”);
//ls.MainMenu();//在这里调用
}否则{
Console.WriteLine(“登录详细信息无效。确实正确吗?”);
}

你有吗?你能准确地共享输出吗?控制台中显示了多少行?你应该在找到第一个匹配项后停止循环吗?你能显示
containDetails
的示例和
用户的一些行吗。文本
,可能你需要忽略大小写。注意:如果你的行是如果不同,则您将收到“无效消息”总是因为您正在将containDetails与文档中的每一行进行比较…一行可以匹配,但其他行不会匹配…是吗?您可以准确地共享输出吗?控制台中显示了多少行?您是否应该在找到第一个匹配项后停止循环?您是否可以显示
containDetails
的示例以及
Users.text中的一些行
,可能是您需要忽略大小写。注意:仅使用
else
而不是
else如果您的行不同,则您将收到“无效消息”总是因为你在对比文档中的每一行的详细信息…一行可以匹配,但其余的不会…谢谢!我应该多想想这个。啊,感觉太愚蠢了。谢谢!我应该多想想这个。啊,感觉太愚蠢了。