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

Java编写Hangman猜单词游戏条件为真时if语句不执行问题求解

Hangman游戏胜利判定不触发问题解决

问题原因

  • 核心错误是使用==比较两个ArrayList对象:Java中==针对引用类型比较的是对象的内存地址,而非存储的内容。你的代码中ans和answer是两个独立创建的集合实例,哪怕元素完全相同,==判断也永远返回false,所以胜利分支永远不会执行。

解决方案

最小改动方案(几乎不修改原有代码逻辑)

仅需将胜利判断的==替换为ArrayList的equals()方法即可,equals()会逐个对比集合内的元素内容和顺序,符合你的判定需求:

// 把原来的if (ans == answer) 改成下面的代码
if (ans.equals(answer)) {
    System.out.println("\nyou win");
    break;
}

可选冗余代码优化(可按需选择)

你代码中每次循环都重复创建answer集合的逻辑是冗余的,可以把这部分逻辑移到循环外提前生成,减少不必要的重复计算,修改后完整代码如下:

import java.util.*;
public class game
{
    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        String list[] = {"apple", "banana", "mango", "kiwi", "coconut", "papaya", "lichi", "strawberry", "orange", "cherry"};
        int rand = (int)(Math.random()*9)+0;
        String word = list[rand];
        String ask = "_";
        for(int i = 1; i < word.length();i++){
            ask = ask + "_";
        }
        System.out.println(ask);
        System.out.println("hint: It is a fruit");
        ArrayList<String> ans = new ArrayList<String>();
        for (char i : ask.toCharArray()){
            ans.add("_");
        }
        // 提前生成正确答案集合,不用每次循环重复创建
        ArrayList<String> answer = new ArrayList<String>();
        for(char i : word.toCharArray()){
            answer.add(String.valueOf(i));
        }
        for (int j = 1; j<=15; j++){
            System.out.println("Enter a character: ");
            String input = in.next();
            char alt = input.charAt(0);
            int x = 0;
            for (char i : word.toCharArray()){
                if(alt == i){
                    ans.set(x, input);
                }
                x++;
            }
            for (String i : ans){
                System.out.print(i);
            }
            // 直接用equals比较内容
            if (ans.equals(answer)){
                System.out.println("\nyou win");
                break;
            }
            System.out.println("\n"+ans);
            System.out.println(answer);
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:39:03