【发布时间】:2020-02-28 13:35:12
【问题描述】:
所以我已经学习 Java 一个多月了,我正在制作一个刽子手游戏,但是我在替换字符串中的字符时遇到了麻烦。我写了它,所以你有两个字符串,一个称为“word”,其中包含要猜测的单词,另一个称为“clone”,它是单词的克隆,它用下划线替换所有字符。然后当你猜测一个字母时,它会检查字符串“word”以确保它包含它,如果它包含它,它将用该字母替换“clone”中的下划线。
while (this.guessesLeft >= 0) {
char letter;
int letterIndex;
getGuess();
if(this.word.contains(this.letterGuessed)) {
StringBuilder newString = new StringBuilder(this.clone);
letterIndex = this.word.indexOf(this.letterGuessed);
letter = this.word.charAt(letterIndex);
newString.setCharAt(letterIndex, letter);
this.clone = newString.toString();
} else {
this.guessesLeft--;
}
printGameBoard();
}
我遇到的问题是,如果您猜测一个字母并且字符串包含两个字符,它只会显示一个。例如,如果使用“burrito”这个词,这是我的输出。
Guess a letter: r
bur____
You have 5 guess left before you die!
Guess a letter: i
bur_i__
You have 5 guess left before you die!
Guess a letter: r
bur_i__
You have 5 guess left before you die!
我将如何编辑我的游戏逻辑,以便在猜到字母“r”时它会将两个 R 都放入字符串中,而不仅仅是一个?提前感谢您的帮助!
【问题讨论】:
-
继续您当前的示例,如果用户第二次提供“i”会发生什么?他应该失败还是什么都不会发生?
-
您只使用
indexOf(int ch)搜索该字符的第一个实例。还有一个版本接受开始搜索的索引,indexOf(int ch, int fromIndex)。您将需要循环,直到您到达字符串的末尾,或者没有更多的字符实例(返回的索引是-1)。 -
@Aaron 你是对的,用户会失去一个回合,我还没有走那么远哈哈。我想先弄清楚这个字符串问题。
-
我觉得在这种情况下使用字符数组会更容易,您不需要
StringBuilder或担心String的不变性(String.toCharArray()将是简单的方法得到它)。