gpt4 book ai didi

java - 如何改变子串的值?

转载 作者:行者123 更新时间:2023-12-01 16:49:08 25 4
gpt4 key购买 nike

我正在尝试制作一个经典的刽子手程序(GUI 很好,没有问题),用户一次猜一个字母。问题是,当用户猜测一个字母时,它会用猜测的字母替换“_”的位置(如果该字母在单词中),但是当猜测下一个字母时,它会忘记上次的猜测,并且位置回到“_”。抱歉,如果不清楚,这里有一个示例

Word is tiger,  
user guesses "g",
outputs _ _ g _ _,
user guesses "r",
outputs _ _ _ _ r.

我希望代码如何工作:

Word is tiger,  
user guesses "g",
outputs _ _ g _ _,
user guesses "r",
outputs _ _ g _ r.

我怎样才能实现这个目标?请记住,“老虎”只是一个示例单词,单词是从数组中随机抽取的。我认为执行此操作的唯一方法是更改​​空白中子字符串的值,但我不知道该怎么做。截至目前,用户从 GUI 窗口(该人本人所在的位置)猜测该字母,并通过按按钮提交答案。目前输出仅打印在控制台上。

这是该程序的麻烦部分:

// guess is the name of JTextPane next to button
// randWord is the word pulled randomly from an array
private void guessLetter() {
guessedLetter = guess.getText();
if (randWord.contains(guessedLetter)){
reveal(); // method below
} else {
wrongGuesses++; // when wrongGuesses adds,
update(); // another body part is added, method not below
}
}

private void reveal() {
int start = randWord.indexOf(guessedLetter); //gets the index of the letter guessed
String print = blanks.substring(0, start) + guessedLetter + blanks.substring(start+1); //reveals the letter
System.out.println(print);//prints the revealed letter in correct spot
}

最佳答案

解决此问题的一种方法是维护一个 StringBuilder 对象,该对象将在每次猜测字母时更新。

String wordToGuess = "tiger";
StringBuilder wordToShow = new StringBuilder();
for (int i=0; i < wordToGuess.length(); ++i) {
wordToShow.append("_");
}

// update publicly shown string; return true if one or more matches found,
// otherwise return false
public boolean guessLetter(char letter) {
boolean result = false;
for (int i=0; i < wordToGuess.length(); ++i) {
if (wordToGuess.charAt(i) == letter) {
// reveal the correctly guessed character
wordToShow.setCharAt(i, letter);
result = true;
}
}

return result;
}

public String reveal() {
return wordToShow.toString();
}

关于java - 如何改变子串的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44039972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com