我在该网站上搜索了类似的问题,但发现的问题对我不起作用。很抱歉询问答案是否在某个地方,但我找不到它。提出这个问题,请让我知道我是否做错了什么。

我正在用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();输入的字符串。

最佳答案

如果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?

关于c# - "Operator ' == ' cannot be applied to operands of type ' char ' and '字符串'",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28121389/

10-17 02:24