Java开发的Hangman猜词游戏最终无法正确显示原单词,该如何修改代码?
问题根源
你遇到的最终单词输出异常是因为hidden是char[]类型的字符数组,直接和字符串拼接时,Java会默认调用数组的toString()方法,输出的是数组的内存地址标识,而非数组中存储的字符内容。你在游戏过程中打印隐藏词时用到的new String(hidden)才是字符数组转可读字符串的正确写法。
可选修改方案
方案1:直接输出已猜对的隐藏数组内容
将原打印代码行修改为如下内容即可,和你游戏过程中的打印逻辑保持一致:
System.out.println("\nGreat!! You guessed the word("+new String(hidden)+")!!!");
方案2:直接输出存储的原单词(更简洁)
游戏结束时已经确认用户完全猜对了单词,你提前存储了当前随机抽取的原单词在变量w中,直接输出该变量即可:
System.out.println("\nGreat!! You guessed the word("+w+")!!!");
额外可选优化(非必需)
你代码中判断重复输入正确字母的逻辑里,变量y的计数存在冗余:匹配到已猜对的字符时y会先+1,之后又不会进入hidden[i]=='*'的分支做第二次+1,最终y==1触发重复提示的逻辑虽然能正常运行,但可以调整计数逻辑让代码可读性更高,不调整也不影响核心功能。
内容的提问来源于stack exchange,提问作者Cy.Car
相关产品推荐
相关产品推荐

