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

Hangman游戏中如何声明并打印用户已输入的错误字母数组

嘿,我来帮你搞定Hangman游戏里错误字母数组的实现~

首先,咱们得先声明一个用来存错误字母的容器,用ArrayList<Character>会比普通数组更灵活,毕竟你不知道用户会猜错多少个字母,动态扩容的列表用起来更省心。

接下来,在你的游戏循环里,每次用户输入字母猜错的时候,就把这个字母加到错误列表里(记得要判断一下,别重复加同一个字母哦,不然用户输错同一个字母还扣次数就不太友好了)。然后每次循环都把错误字母打印出来,让用户清楚自己已经踩过哪些坑。

我把你的代码补全了,你可以参考一下:

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class HangmanGame {
    // 假设这是你的单词列表,你可以换成自己的
    private static List<String> word = List.of("apple", "banana", "cherry", "date");
    private static int Tries = 0;

    public static void chosenWord() throws IOException {
        String randomWord = "";
        Scanner ui = new Scanner(System.in);
        Random rand = new Random();
        randomWord = word.get(rand.nextInt(word.size()));
        String dashes = new String(new char[randomWord.length()]).replace("\0", "_");
        
        // 声明存储错误字母的列表
        ArrayList<Character> wrongLetters = new ArrayList<>();

        while (Tries < 6 && dashes.contains("_")) {
            System.out.println("当前猜词进度: " + dashes);
            System.out.print("请输入一个字母: ");
            char guess = ui.next().charAt(0);

            if (randomWord.contains(String.valueOf(guess))) {
                // 猜对了,更新下划线字符串
                StringBuilder newDashes = new StringBuilder(dashes);
                for (int i = 0; i < randomWord.length(); i++) {
                    if (randomWord.charAt(i) == guess) {
                        newDashes.setCharAt(i, guess);
                    }
                }
                dashes = newDashes.toString();
            } else {
                // 猜错了,先检查有没有已经加过这个字母
                if (!wrongLetters.contains(guess)) {
                    wrongLetters.add(guess);
                    Tries++;
                }
                System.out.println("猜错啦!剩余尝试次数: " + (6 - Tries));
            }

            // 打印所有已输入的错误字母
            System.out.println("已猜错的字母: " + wrongLetters);
        }

        // 游戏结束后的结果提示
        if (!dashes.contains("_")) {
            System.out.println("🎉 恭喜你猜对了!正确单词是: " + randomWord);
        } else {
            System.out.println("😢 游戏结束,你输了!正确单词是: " + randomWord);
        }
        ui.close();
    }

    public static void main(String[] args) throws IOException {
        chosenWord();
    }
}

这里几个关键点要注意:

  • 用ArrayList而不是数组,因为它能自动扩容,不用预先设定大小,处理动态的错误字母数量更方便。
  • 加了一个判断!wrongLetters.contains(guess),避免用户重复输入同一个错误字母时,重复添加到列表里还浪费尝试次数。
  • 每次循环都会打印错误字母列表,用户能直观看到自己已经猜过哪些错误的字母,体验更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:29:11