比较字符串和字符#

时间:2018-03-14 22:24:23

标签: c# string char operands

我正在使用c#进行控制台H​​angman游戏。我试图将用户输入的字母与我生成的随机字母中的字母进行比较。我得到的错误是"运营商" =="不能应用于" 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--;
                }
            }
        }
    }

2 个答案:

答案 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类型,比较中没有问题。