C# 嵌套While语句不工作

C# 嵌套While语句不工作,c#,console,C#,Console,我有一个控制台程序,它根据用户输入的长度和宽度绘制形状。当这项工作完成时。我想问用户是否想画另一个形状,如果是的话。它应该重新启动程序。此外,当要求用户输入Y表示是或N表示否时,我希望确保用户不能超出这两个字母。我目前在我的主要方法中使用这个 DrawShape mn = new DrawShape(); mn.ans = "y"; while (mn.ans.ToLower() == "y") { try { mn.Lenght(); Conso

我有一个控制台程序,它根据用户输入的长度和宽度绘制形状。当这项工作完成时。我想问用户是否想画另一个形状,如果是的话。它应该重新启动程序。此外,当要求用户输入Y表示是或N表示否时,我希望确保用户不能超出这两个字母。我目前在我的主要方法中使用这个

DrawShape mn = new DrawShape();
mn.ans = "y";
while (mn.ans.ToLower() == "y")
{
    try
    {
        mn.Lenght();
        Console.WriteLine();
        mn.Breadth();
        Console.WriteLine();
        mn.Draw();
        Console.WriteLine("\n");
        mn.Remark();
        Console.WriteLine("\n\nDO YOU WANT TO REDRAW A SHAPE? \nPRESS Y - YES or N - NO");
        mn.ans = Console.ReadLine();
        Console.WriteLine();
        while (mn.ans.ToLower() != "y" || mn.ans.ToLower() != "n")
        {
            Console.WriteLine("\nPLEASE PRESS Y - YES or N - NO");
            mn.ans = Console.ReadLine();
        }
    }
    catch (Exception e)
    {
        Console.WriteLine("\n" + e.Message);
        Console.WriteLine();
    }
}
这不起作用,因为这是我得到的输出

这表明无论我输入什么,错误消息仍然显示


请问我做错了什么?

如果您使用了错误的运算符,请使用
&&
而不是
|

while (mn.ans.ToLower() != "y" && mn.ans.ToLower() != "n") {
        Console.WriteLine("\nPLEASE PRESS Y - YES or N - NO");
        mn.ans = Console.ReadLine();
}
或者这个:

while (!(mn.ans.ToLower() == "y" || mn.ans.ToLower() == "n")) {
        Console.WriteLine("\nPLEASE PRESS Y - YES or N - NO");
        mn.ans = Console.ReadLine();
}
注意:应将
mn.ans.ToLower()
存储到变量中,以避免重复代码。
您还可以尝试使用
Equals
方法,该方法支持通过传入的
StringComparison.CurrentCultureInoRecase
不敏感地比较字符串大小写。

如果使用了错误的运算符,请使用
&
而不是
|

while (mn.ans.ToLower() != "y" && mn.ans.ToLower() != "n") {
        Console.WriteLine("\nPLEASE PRESS Y - YES or N - NO");
        mn.ans = Console.ReadLine();
}
或者这个:

while (!(mn.ans.ToLower() == "y" || mn.ans.ToLower() == "n")) {
        Console.WriteLine("\nPLEASE PRESS Y - YES or N - NO");
        mn.ans = Console.ReadLine();
}
注意:应将
mn.ans.ToLower()
存储到变量中,以避免重复代码。
您还可以尝试使用
Equals
方法,该方法支持通过传入的
StringComparison.CurrentCultureInoRecase
不敏感地比较字符串大小写。

这与Windows Media Player有何关系?@luiscubal抱歉,这是一个错误。我忘了在我的最后一个问题中清除标签这与Windows Media Player有什么关系?@luiscubal抱歉,这是个错误。我忘了在最后一个问题中清除标签谢谢。愚蠢的我一定忽略了,谢谢。愚蠢的我一定忽略了这一点