比较字符串和字符 C#
Comparing a string and a char c#
我正在使用 C# 开发控制台 Hangman 游戏。我正在尝试将用户输入的字母与我生成的随机单词中的字母进行比较。我得到的错误是 "Operator "==" cannot be applied to operands of type "string" and "char"。还有什么其他方法可以做到这一点?我在谷歌上搜索了很多,但我没有找到任何想法。
public static void LetterChecker(string word)
{
int userGuesses = 6;
string userInputGuess;
while(userGuesses > 0)
{
Console.WriteLine("Please guess a letter");
userInputGuess = Console.ReadLine();
foreach(var letter in word)
{
if(userInputGuess == letter)
{
Console.WriteLine("this letter is in word, guess again");
}
else
{
Console.WriteLine("Incorrect guess");
userGuesses--;
}
}
}
}
不要使用读取整行的 Console.ReadLine
,而是使用 Console.ReadKey
:
Obtains the next character or function key pressed by the user.
The pressed key is displayed in the console window.
char userInputGuess;
...
Console.WriteLine("Please guess a letter");
userInputGuess = Console.ReadKey().KeyChar;
Console.ReadLine()
的return类型是字符串。由此,您的 userInputGuess
是字符串类型,这就是您收到错误的原因。稍作修改,您的代码就可以工作。而不是:
if(userInputGuess == letter)
使用:
if(userInputGuess[0] == letter)
这将读取您所在行的第一个字母。但正如您可能猜到的那样,这不是这种情况下的最佳解决方案。
更好的方法是只从控制台读取一个字母。像这样:
var userInputGuess = Console.ReadKey().KeyChar; (and get rid of the previous declaration)
这个结果是char类型的,你比较不会有问题。
我正在使用 C# 开发控制台 Hangman 游戏。我正在尝试将用户输入的字母与我生成的随机单词中的字母进行比较。我得到的错误是 "Operator "==" cannot be applied to operands of type "string" and "char"。还有什么其他方法可以做到这一点?我在谷歌上搜索了很多,但我没有找到任何想法。
public static void LetterChecker(string word)
{
int userGuesses = 6;
string userInputGuess;
while(userGuesses > 0)
{
Console.WriteLine("Please guess a letter");
userInputGuess = Console.ReadLine();
foreach(var letter in word)
{
if(userInputGuess == letter)
{
Console.WriteLine("this letter is in word, guess again");
}
else
{
Console.WriteLine("Incorrect guess");
userGuesses--;
}
}
}
}
不要使用读取整行的 Console.ReadLine
,而是使用 Console.ReadKey
:
Obtains the next character or function key pressed by the user.
The pressed key is displayed in the console window.
char userInputGuess;
...
Console.WriteLine("Please guess a letter");
userInputGuess = Console.ReadKey().KeyChar;
Console.ReadLine()
的return类型是字符串。由此,您的 userInputGuess
是字符串类型,这就是您收到错误的原因。稍作修改,您的代码就可以工作。而不是:
if(userInputGuess == letter)
使用:
if(userInputGuess[0] == letter)
这将读取您所在行的第一个字母。但正如您可能猜到的那样,这不是这种情况下的最佳解决方案。
更好的方法是只从控制台读取一个字母。像这样:
var userInputGuess = Console.ReadKey().KeyChar; (and get rid of the previous declaration)
这个结果是char类型的,你比较不会有问题。