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

Hangman游戏输入限制功能异常,寻求代码调试帮助

修复Hangman游戏的输入校验逻辑问题

我看到你在实现Hangman游戏的输入校验时遇到了逻辑漏洞,导致原本的校验规则可以被轻易绕过。咱们一步步拆解问题,然后修复代码:

现存的核心问题

你的guess方法里有几个关键逻辑错误,直接导致了校验失效:

  • 赋值而非比较:while (Supercontroll = true) 这里是把true赋值给变量,不是判断它是否等于true;后面的while (Supercontroll=false); 也是错误的赋值操作,完全打乱了循环逻辑。
  • 字符校验未实时更新:Charactercontroll只在方法开头初始化了一次,当用户重新输入新内容后,你没有更新这个变量,导致后续的非字母校验一直用第一次输入的字符,完全失效。
  • 冗余混乱的循环嵌套:内部多余的while循环完全没必要,反而让逻辑变得混乱不堪。

修正后的代码

下面是修复好的guess方法,同时优化了代码结构,让逻辑更清晰直观:

private static char guess(String previousGuesses) {
    Scanner keyboard = new Scanner(System.in);
    char userLetter;
    
    // 无限循环直到输入符合要求
    while (true) {
        System.out.print("Gissa en bokstav: ");
        String userInput = keyboard.next().toUpperCase();
        
        // 校验输入长度是否为1
        if (userInput.length() != 1) {
            System.out.println("Du får bara skriva en bokstav, försök igen!");
            continue;
        }
        
        userLetter = userInput.charAt(0);
        
        // 校验是否为字母
        if (!Character.isLetter(userLetter)) {
            System.out.println("Detta är inte en bokstav, försök igen!");
            continue;
        }
        
        // 校验是否已经猜过这个字母
        if (previousGuesses.contains(String.valueOf(userLetter))) {
            System.out.println("Du har redan gissat på denna bokstav, försök igen!");
            continue;
        }
        
        // 所有校验通过,返回字母
        return userLetter;
    }
}

关键修改说明

  • 简化循环结构:用while (true)创建无限循环,直到输入符合要求才返回结果,逻辑更直观,避免了嵌套混乱。
  • 实时更新校验字符:每次用户输入后立即提取字符并校验,彻底解决了旧字符残留的问题。
  • 用continue跳过无效输入:当某条校验失败时,直接回到循环开头重新获取输入,代码可读性更强。
  • 修正比较逻辑:去掉了所有错误的赋值操作,所有判断都使用正确的条件比较。
  • 添加输入提示:增加了System.out.print("Gissa en bokstav: "),让用户明确知道需要进行输入,提升交互体验。

另外建议把主方法里的previousLetters变量名改成previousGuesses,和方法参数名保持一致,代码会更规范。

这样修改后,输入校验就会严格生效:用户必须输入单个大写字母,不能重复猜过的字符,也不能输入非字母内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:33:00