"Operator '==' cannot be applied to operands of type 'char' and 'string'"



我已经在这个网站上搜索了类似的问题,我发现的问题不适合我。我很抱歉问答案是否在某个地方,但我无法找到它。如果我做错了什么,请问这个让我知道。

我正在用 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();

归功于替换字符串中给定索引处的字符?

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

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

我假设猜测字母在这里是字符串类型。

下面是一个示例:

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!"); 
}
gameWord

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

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

相关内容

最新更新