Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查输入是否与特定字母匹配?_C# - Fatal编程技术网

C# 如何检查输入是否与特定字母匹配?

C# 如何检查输入是否与特定字母匹配?,c#,C#,我不知道如何检查输入是否是一个特定的字母。我知道如何检查它是否是特定的int/double,但当它是字符串时,我不知道该怎么办 任何帮助都将不胜感激。我只是想做一个3个基本问题的测验,检查用户回答的字母是否正确(a、b或c),然后将其添加到当前分数中 class Program { static void Main() { var a1 = "a"; var a2 = "b"; var a3 = "c"; var q

我不知道如何检查输入是否是一个特定的字母。我知道如何检查它是否是特定的
int
/
double
,但当它是
字符串时,我不知道该怎么办

任何帮助都将不胜感激。我只是想做一个3个基本问题的测验,检查用户回答的字母是否正确(a、b或c),然后将其添加到当前分数中

class Program
{
    static void Main()
    {
        var a1 = "a";
        var a2 = "b";
        var a3 = "c";
        var qa = 0;
        while (qa != 3)
        {
            if (qa == 0)
            {
                Console.Write("What is the answer to question 1? ");
                var entry1 = Console.Read();

                if()
                {

                }                                              
            }

            else if (qa == 1)
            {
                Console.Write("What is the answer to question 2? ");
                Console.ReadLine();
            }

            else if (qa == 2)
            {
                Console.Write("What is the answer to question 3? ");
                Console.ReadLine();
            }                
        }    
    }
}
例如,运算符==不能应用于字符串

事实并非如此。它可以应用于:

if(entry.ToString() == a1)
报告告诉我们:

对于字符串类型,==比较字符串的值

另一种可能性是使用这种方法

编辑:

仔细看你的代码,我意识到你正在使用 哪个

从标准输入流中读取下一个字符

这意味着它返回一个
char
(并且仅返回1)

我想你需要用户输入的整行代码。所以你应该改用。它返回一个
字符串
,并允许您进行直接比较

string entry1 = Console.ReadLine();
if(entry == a1)

当您使用
var
声明类型时,编译器会推断类型,并且错误在稍后阶段变得明显。您不能在
字符串
字符
上使用
==
运算符
Read()
返回一个
char
,因此您首先无法对其进行比较

请注意,在“问题1”中,您编写了Console.Read()(而不是Console.ReadLine()),它返回一个char,而不是字符串。因此,不能将“==”应用于entry1和a1,因为entry1将是一个字符,而a1是一个字符串。

如果比较兼容的变量,一切都应该正常

string input1;
var input2 = "";
var input3 = 0;

// assign some input values, then compare

// strings
if (input1 == "a") // ok
{ }
if (input2 == "a") // ok
{ }
if (input3 == "a") // not ok, comparing int to string
{ }
// numbers
if (input1 == 1) // not ok, comparing string to int
{ }
if (input3 == 1) // ok
{ }

如果愿意,可以尝试使用Console.Read();,匹配字符的ASCII值;。这将消除按enter键的需要。如果您试图匹配大写字母A:

    int input = Console.Read();
    if (input == (int)char.GetNumericValue(A))
    {
        Console.WriteLine("True");
        Console.Read();

    }
    else
    {
        Console.WriteLine("False");
        Console.Read();

    }

您需要增加
qa
,以便在不使用数组的情况下使用while循环来回答其他问题。你可以把那些陈述写下来。(没有if's等)我同意@JeroenvanLangen的观点-这里实际上不需要
循环。@EJoshuaS它只会使它更复杂。只是吻;-)@JeroenvanLangen好的,谢谢你,下次我会记住的。现在你说它确实没有多大意义,但出于某种原因,当我写它的时候,它在我的脑海中是有意义的:)关于
==
操作符的极好的观点,很好的文档链接。。。显然,我总是错过文档中关于不使用字符串引用比较的部分。。为了安全起见,我一直使用
Equals()
。妈的,谢谢你的快速响应!我现在开始工作了,Strings.Equals正是我想要的方法类型。我说它不能应用于字符串,这很糟糕,我用错了。@Jesseschoon不,你没有用错。当您使用
var
声明类型时,编译器会推断类型,并且错误在稍后阶段变得明显。您不能在
string
char
上使用它。Read()返回一个
char
,这就是为什么您无法在第一个place@MongZhu是的,我做了:)我正在Teamtreehouse.com上做一个额外的任务,这件事让我非常困惑。但多亏了你的回答和其他用户的进一步澄清,我想我现在已经理解了材料。使用
阅读
方法很好。当其他地方OP使用
ReadLine
谢谢,我对ReadLine与Read相比的工作原理有点困惑,您对此进行了解释。
    int input = Console.Read();
    if (input == (int)char.GetNumericValue(A))
    {
        Console.WriteLine("True");
        Console.Read();

    }
    else
    {
        Console.WriteLine("False");
        Console.Read();

    }