我正在使用c#进行控制台Hangman游戏。我试图将用户输入的字母与我生成的随机字母中的字母进行比较。我得到的错误是"运营商" =="不能应用于" string"类型的操作数和" char"。我还有什么方法可以做到这一点?我已经google了很多,但我还没有发现任何想法。
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--;
}
}
}
}
答案 0 :(得分:6)
使用Console.ReadLine
:
Console.ReadKey
获取用户按下的下一个字符或功能键 按下的键显示在控制台窗口中。
char userInputGuess;
...
Console.WriteLine("Please guess a letter");
userInputGuess = Console.ReadKey().KeyChar;
答案 1 :(得分:0)
Console.ReadLine()
的返回类型是一个字符串。这样你的userInputGuess
是字符串类型,这就是你收到错误的原因。稍作修改,您的代码就可以运行。而不是:
if(userInputGuess == letter)
使用:
if(userInputGuess[0] == letter)
这将读取你的第一个字母。但正如您可能猜到的,在这种情况下,这不是最佳解决方案。
更好的方法是从控制台只读取一个字母。像这样:
var userInputGuess = Console.ReadKey().KeyChar; (and get rid of the previous declaration)
结果是char类型,比较中没有问题。