我在该网站上搜索了类似的问题,但发现的问题对我不起作用。很抱歉询问答案是否在某个地方,但我找不到它。提出这个问题,请让我知道我是否做错了什么。
我正在用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();
输入的字符串。 最佳答案
如果guessedLetter
是string
,那么您需要将一种类型更改为另一种类型。您可以轻松获得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/