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

Java控制台开发Hangman游戏如何按单词格式打印数组内容

Hangman猜词游戏占位符打印格式问题

问题场景

开发控制台版Hangman(刽子手)猜词游戏时,需要先打印下划线占位符,用户猜对字符后将对应位置的下划线替换为正确字符。
实现逻辑使用两个字符串数组:

  • 数组underDashWord全部填充下划线,作为显示用的占位符数组
  • 数组wordByLettersArray按单个字符拆分,存储待猜单词的每一位
    初始化代码:
Arrays.fill(underDashWord, "_");
for (int i = 0; i < wordChosen.length(); i++) {
    wordByLettersArray[i] = String.valueOf(wordChosen.charAt(i));
}

选择String类型而非char类型存储单个字符,是为了后续直接调用.equals方法做值比对,字符匹配替换逻辑:

for (int i = 0; i < underDashWord.length; i++) {
    if (wordByLettersArray[i].equals(userGuess)){
        underDashWord[i] = wordByLettersArray[i];
    }
}

上述替换逻辑本身可以准确定位猜对的字符位置,比如待猜单词为milk、用户猜对i时,预期输出效果为_ i _ _。但当前使用System.out.println(Arrays.toString(underDashWord));打印,实际输出为[ _, i, _ , _ ],带有多余的方括号和逗号,不符合展示需求。

原因说明

Arrays.toString()是Java提供的数组调试工具方法,默认实现就会用方括号包裹所有数组元素,元素之间用逗号分隔,这个格式是为了方便开发时快速查看数组内容,并不适合面向用户的业务展示场景。

解决方法

不需要修改原有替换逻辑,只需要替换打印时的拼接逻辑即可,两种常用实现:

方法1:遍历拼接(兼容所有JDK版本)

遍历数组元素手动拼接,元素之间用空格分隔,使用StringBuilder提升拼接效率:

StringBuilder displayContent = new StringBuilder();
for (int i = 0; i < underDashWord.length; i++) {
    displayContent.append(underDashWord[i]);
    // 非最后一个元素时,元素后拼接空格
    if (i != underDashWord.length - 1) {
        displayContent.append(" ");
    }
}
System.out.println(displayContent);

方法2:使用String.join(JDK 8及以上版本可用,代码更简洁)

JDK 8新增的String.join方法支持指定分隔符直接拼接字符串数组,不需要手动写遍历逻辑:

String displayContent = String.join(" ", underDashWord);
System.out.println(displayContent);

两种方法输出效果完全一致,猜对i时都会输出预期的_ i _ _格式,可根据项目使用的JDK版本选择。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:06:26