2

我有一个控制台程序,它根据用户输入的长度和宽度绘制形状。完成后。我想问用户他是否想绘制另一个形状,如果是的话。它应该重新启动程序。此外,当要求用户输入 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();
    }
}

这不起作用,因为这是我得到的输出

输出

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

请问我做错了什么?

4

1 回答 1

4

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

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.CurrentCultureIgnoreCase

于 2013-10-08T20:31:55.793 回答