“运算符'=='不能应用于'char'和'string'类型的操作数”

时间:2015-01-24 01:39:54

标签: c#

我在这个网站上搜索过类似的问题,而我发现的问题并不适用于我。我为询问答案是否在某个地方并且我无法找到而道歉。如果我这样做,请告诉我是否做错了。

我在C#中制作刽子手。我所做的就是让程序从一个数组中选取一个随机字符串,制作一个猜测字母的数组(它最初用“_”填充,只要这个字是)。然后它应该获得用户输入的字母,看看该字母是否在单词中,如果是,则将该字母添加到猜测的字母数组中。我被困在这个部分:

if (gameWord.Contains(guessedLetter)) 
{
    //for every character in gameWord
    for (int x = 0; x < gameWord.Length; x++)
    {
        //if the character at the 'x' position in gameWord is equal to the guessed letter
        if (gameWord[x] == guessedLetter)
        {
            //guessString at that x position is equal to the guessed letter
            guessString[x] = guessedLetter;
        }
    }

}

在“if (gameWord[x] == guessedLetter)”我收到标题中显示的错误。

gameWord是从字符串数组中选择的字符串,guessedLetter是用户使用Console.ReadLine();输入的字符串。

3 个答案:

答案 0 :(得分:5)

如果guessedLetterstring,那么您需要将一种类型更改为另一种类型。您可以轻松获得guessedLetter的第一个字符:

if (gameWord[x] == guessedLetter[0])

或致ToString() gameWord[x],如另一个答案所示。

但是,您将遇到一个更多更大的问题。 []是一个只读操作(MSDN),因为字符串是不可变的,所以你的下一行(赋值)将失败。

为此,您需要StringBuilder

StringBuilder sb = new StringBuilder(gameWord);
sb[index] = guessedLetter[0];
gameWord = sb.ToString();

获得该代码的Replacing a char at a given index in string?

答案 1 :(得分:2)

您需要比较相同类型的值。从gameWord中获取角色时,即 gameWord [x] ,该值将被视为 char

guessedLetter 也需要是 char 类型才能进行比较。

我假设guessedLetter的类型为 string

以下是一个例子:

string gameWord = "Random"; 
char guessedLetter = char.Parse(Console.ReadLine());

for (int i=0; i < gameWord.length; i++) {
    if (gameWord[i] == guessedLetter)
        Console.WriteLine("Letter was found!"); 
}

答案 2 :(得分:1)

gameWord [x]正在访问gameWord的一个角色,所以它是一个角色,而不是一个字符串。您可以在比较之前将其转换为字符串:

if (gameWord[x].ToString() == guessedLetter)