如何使用if命令检查用户输入

时间:2015-09-21 22:00:18

标签: c# if-statement input key chars

不确定我是否忽略了一些非常简单的事情,但我试图创建一个程序,允许用户输入2个字母中的1个,然后根据输入运行代码。看起来很简单但我遇到了几个错误,我认为这可能有用。这是代码:

string name = (Console.ReadLine());
Console.WriteLine("Is " + name + " ok?");
Console.WriteLine("\n(Y)es\n(N)o");
char ansys = Console.ReadKey();
if (ansys = ConsoleKey.Y)
    Console.Clear();
else
{
    Console.WriteLine();
    Console.WriteLine("Enter letters only");
}

我在其他部分添加了(未完成)只是为了了解我是否也按照预期的目标向正确的方向前进。如果Y或N都不按这种方式,我是否能够制作一个触发的else语句?

4 个答案:

答案 0 :(得分:1)

嗯,首先,你正在做作业,而不是比较:

if (ansys.Key = ConsoleKey.Y)

错了,请使用:

if (ansys.Key == ConsoleKey.X)

==是比较,=是作业。不要混淆它们,它可能会导致严重的问题。

对于你的问题,如果你只是添加else if语句检查“否”答案,那么如果按下Y或N,则不会触发语句。如果至少执行if语句,则不会执行else语句。

您的代码应如下所示:

if (ansys == ConsoleKey.Y) {
    // code if yes
}
else if (ansys == ConsoleKey.N) {
    // code if no
}
else {
    // code if neither
}

修改 由于我的主要语言不是C#,我查看文档来检查我的答案。我发现如果你使用ReadKey()它不返回ConsoleKey,它会返回struct ConsoleKeyInfo。您需要使用Key的{​​{1}}成员才能访问所按下的密钥。请重新检查代码。

答案 1 :(得分:0)

尝试这种方法:

ConsoleKeyInfo cki;
cki = Console.ReadKey();

if (cki.Key == ConsoleKey.Y)
{
    Console.Clear();
}
else if (cki.Key == Console.N)
{
    Console.Clear();
}
else
{
    Console.WriteLine();
    Console.WriteLine("Enter letters only");
}

您可以在此处找到示例:ReadKey - examples

答案 2 :(得分:0)

试试这个:

string name = (Console.ReadLine());
Console.WriteLine("Is " + name + " ok?");
Console.WriteLine("\n(Y)es\n(N)o");
var ansys = Console.ReadKey();
if (ansys.KeyChar == 'y' || ansys.KeyChar == 'Y')
{
    //Handle yes case
}
if (ansys.KeyChar == 'n' || ansys.KeyChar == 'N')
{
    //Handle no case
}
else
{
    Console.WriteLine();
    Console.WriteLine("Enter letters only");
}

答案 3 :(得分:0)

试试这个(无法测试)

  • 这将在确认答案为Y
  • 之前询问姓名
  • 如果在询问Y或N时输入是另一回事,它会再次询问姓名确认。

    string name = "";
    while (name.equals(""))
    {
        name = (Console.ReadLine());
        Console.WriteLine("Is " + name + " ok?");
    
        String answer = "";
        while(answer.equals(""))
        {
            Console.WriteLine("\n(Y)es\n(N)o");
            char ansys = Console.ReadKey();
            if (ansys == ConsoleKey.Y || ansys == ConsoleKey.N)
            {
                answer = ansys.ToString();
                Console.Clear();
            }
            else
            {
                Console.WriteLine();
                Console.WriteLine("Enter letters only!!");
            }
        }
        if(!answer.equals("Y"))
            name = "";
    }
    

我不确定ansys.ToString()是否是一个有效的方法,如果按下的键是Y,则返回“Y”字符串