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

如何实现Hangman游戏中用户错误输入次数的正确统计?

解决Hangman游戏错误输入次数统计问题

你的核心问题是错误计数逻辑错误:当前代码在遍历单词每个字符时,只要当前字符与猜测字符不匹配就给misses加1,导致一次错误猜测被重复统计(比如单词长度为8,猜错一次会让misses直接加8)。正确逻辑应该是:只有当整个单词里完全没有用户猜测的字符时,才给错误次数加1。

修改步骤:

  1. 每次获取用户猜测后,初始化一个布尔变量标记本次猜测是否正确
  2. 遍历单词字符数组时,仅负责匹配字符并更新隐藏数组,同时设置正确猜测的标记
  3. 遍历结束后,根据标记判断是否需要增加错误次数

修改后的完整代码:

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class Lab17 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Random r = new Random();
        String[] words = {"greetings", "mountain", "school", "horse", "program"};

        System.out.println("Would you like to play? y/n: ");
        String playAgain = input.nextLine();

        while (playAgain.equals("y")){
            int misses = 0;
            boolean solved = false;

            String word = words[r.nextInt(5)];
            char[] wordArray = word.toCharArray();
            char[] hiddenWordArray = Arrays.copyOf(wordArray, wordArray.length);
            for (int i = 0; i < word.length(); i++) {
                hiddenWordArray[i]='*';
            }

            while (!solved){
                System.out.print("(Guess) Enter a letter in word ");
                for (int i = 0; i < word.length(); i++) {
                    System.out.print(hiddenWordArray[i]);
                }

                System.out.println();
                char guess = input.next().charAt(0);
                boolean isCorrectGuess = false; // 新增标记变量

                for (int i = 0; i < word.length(); i++) {
                    if (guess == wordArray[i]){
                        hiddenWordArray[i] = guess;
                        isCorrectGuess = true; // 找到匹配字符,标记为正确猜测
                    }
                    // 移除原else分支,不再在此处计数
                }

                // 遍历结束后判断是否猜错
                if (!isCorrectGuess) {
                    misses++;
                }

                if (Arrays.equals(hiddenWordArray, wordArray)){
                    System.out.println("The word is: "+word+". You missed "+misses+" times");
                    solved = true;
                }
            }
            System.out.println();
            System.out.println("Would you like to play again? y/n: ");
            playAgain = input.next();
        }
    }
}

额外优化提示:

  • 可添加逻辑防止用户重复猜测同一字符(比如已猜过的正确字符,再次输入时不处理也不计数错误)
  • 注意输入大小写问题,可统一将用户输入转为小写后再匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:50:17