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

如何避免在Java方法间反复传递dineros和rep变量?

优化文字冒险游戏的状态传递问题

你现在的问题根源在于把游戏核心状态(金钱、声望)放在了main方法的局部变量里,导致每次调用方法都要手动传递。最直接的解决方式是把这两个变量变成类的成员变量,让所有实例方法可以直接访问,不用反复传参。

具体实现步骤:

  1. 将状态变量转为类成员
    在ACRE类中定义dineros和rep作为实例变量,替代main里的局部变量。
  2. 修改方法,移除冗余参数
    startTrain和printStats不再需要接收这两个变量作为参数,直接使用类内的成员变量即可。
  3. 调整初始化逻辑
    在main方法中创建ACRE实例后,直接给成员变量赋值完成初始化。

修改后的完整代码:

public class ACRE {
    // 把游戏核心状态定义为类的成员变量
    private int dineros;
    private int rep;
    private char optionKey;

    public static void main(String[] args) {
        ACRE game = new ACRE();
        // 初始化游戏初始状态
        game.dineros = 1500;
        game.rep = 100;
        game.optionKey = '0';
        game.startTrain();
    }

    /**
     * 游戏起始流程
     */
    public void startTrain() {
        printStats();
        System.out.print("你在火车上。要不要下车?相关剧情内容");
        // 编写选项交互逻辑
    }

    /**
     * 打印当前金钱与声望状态
     */
    public void printStats() {
        System.out.print("金钱: " + dineros + "D");
        System.out.print("  *   ");
        System.out.print("声望: " + rep + "\n");
    }
}

额外优化建议:

  • 可以给成员变量添加getter/setter方法(比如getDineros()、setRep(int newRep)),遵循面向对象的封装原则,避免直接修改成员变量。
  • 如果后续游戏状态增多(比如体力、道具等),可以单独创建GameState类统一管理所有状态,让ACRE类专注于游戏流程控制,代码结构会更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:12:43