You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java开发Hangman猜词游戏时猜中字母后隐藏词不更新问题

Hangman猜词游戏占位符不更新问题修复方案

你遇到的问题由两处代码逻辑错误共同导致,修复方案如下:

错误1:updateWord方法未同步更新结果到类成员变量

updateWord方法末尾生成的newGuess是方法内部局部变量,执行结束后会被直接回收,存储隐藏词的类成员变量guess始终没有被修改,自然不会显示更新后的结果。
修复后的updateWord代码:

public void updateWord(char a) {
    char [] newWord = new char [word.length()];
    for(int i = 0; i<word.length();i++) {
        if(word.charAt(i)==a) {
            newWord[i] = a;
        } else {
            newWord[i] = guess.charAt(i);
        }
    }
    // 修复:将更新后的字符串赋值给类成员变量guess
    guess = String.valueOf(newWord);
}

错误2:displayGuess方法每次调用都会重置guess为全占位符

现有displayGuess方法每次执行都会清空guess,重新拼接全量占位符。如果是在调用updateWord之后调用displayGuess打印结果,之前的更新结果会被直接覆盖成全占位符。
修复方案:将初始化全占位符的逻辑单独抽离,仅在游戏启动时执行一次,displayGuess仅负责打印当前进度:

// 游戏初始化时仅调用一次,生成初始全占位符隐藏词
public void initGuess() {
    guess = "";
    int length = word.length();
    for(int i = 0; i<length;i++) {
        guess += String.valueOf(symbol);
    }
    count++;
}

// 仅负责打印当前猜测进度
public void displayGuess() {
    System.out.println("Guess is " + guess);
}

调用流程修正

修复后按以下顺序调用即可达到预期效果:

  • 游戏启动后调用一次initGuess生成初始隐藏词
  • 用户每次输入猜测字母后调用updateWord更新进度
  • 调用displayGuess打印当前隐藏词

内容的提问来源于stack exchange,提问作者yeah man12345

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:18:01