我如何制作它以使==确实可以处理字符串和字符。
class Program
{
static void Main(string[] args)
{
string a;
// get random lowercase letter
Console.WriteLine(RandomLetter.GetLetter());
a = Console.ReadLine();
if (a == RandomLetter.GetLetter())
错误 '运营商' =='不能应用于' string'类型的操作数和' char''
{
}
Console.ReadLine();
}
}
}
答案 0 :(得分:2)
如果您想阅读一个字符,请使用Console.ReadKey
方法
char random = RandomLetter.GetLetter();
Console.WriteLine(random);
char input = Console.ReadKey().KeyChar;
if (random == input)
答案 1 :(得分:0)
(a == RandomLetter.GetLetter().ToString())
所有对象的ToString()
覆盖可用于将任何内容更改为字符串。
答案 2 :(得分:0)
以下是一些选项:
if (a == RandomLetter.GetLetter().ToString()) ...
if (a.Length == 1 && a[0] == RandomLetter.GetLetter()) ...
但正如其他答案所提到的那样,在您的特定情况下,您最好只是从控制台读取一个角色。
答案 3 :(得分:0)
Console.ReadLine()
将整行读作String
,因此无法直接与单个字符进行比较。您需要将角色转换为String
,因此可以对其进行比较(.ToString()
),或者读取用户输入的单个密钥,例如使用Console.ReadKey().KeyChar
代替Console.ReadLine()
。
如果想要允许用户输入一行字符并检查它是否包含单个指定字符,那么您将需要使用前者。如果您想阅读单键,请使用后者。
答案 4 :(得分:0)
尝试将字符串的第一个字母与char进行比较(因为字符串只是char类型的数组)。通过这种方式,如果用户输入的数量超过您想要的程度,程序就不会崩溃。
char myChar = 'a';
string myString = "a";
if (myChar == myString[0])
{
Console.WriteLine("it's a match");
Console.ReadLine();
}
答案 5 :(得分:0)
您可以使用:
Console.ReadKey().KeyChar
仅获取第一个键入的字符。 Console.ReadLine().First()
,但它允许用户编写整个字符序列。小心使用ReadKey
方法,因为它允许用户按 SHIFT , CTRL 或任何其他键,即使他们没有“书面”表示,如果你打算只比较“可写”字符。