如何避免永远将这两个变量从一个方法发送到另一个方法?

问题描述 投票:0回答:1
这里是 Java 新手。我正在创建一个小型文本冒险游戏来练习。在 main 方法中,我初始化了 dineros(金钱)和 rep(声誉)变量,并在游戏开始时调用该方法,该方法还调用了一个方法来打印当前的 dineros 和 rep。我打算几乎每次显示新的文本块(即游戏中的每一个小步骤)时都会调用 printStats 。但我注意到的是: main 初始化dineros和rep,并用它们调用startTrain - 因为startTrain需要它们然后将它们发送到它调用的printStats。如果我在 startTrain 上执行“如果按 A,调用方法 getOffTrain()”之类的操作,那么如果我想从那里调用 printStats,我还必须将 dineros 和rep发送到 getOffTrain。

public class ACRE { /** * * @param args not used. */ public static void main(String[] args) { int dineros; int rep; char optionKey; dineros = 1500; rep = 100; optionKey = '0'; ACRE game = new ACRE(); game.startTrain(dineros, rep); } /** * Start of the game * * @param dineros an integer number for the user's current money * @param rep an integer number for the user's current reputation * */ public void startTrain(int dineros, int rep) { printStats(dineros, rep); System.out.print("ur on a train. get off or nah etc etc"); //show options here } /** * Print current money and reputation */ public void printStats(int dineros, int rep) { System.out.print("Dinero: " + dineros + "D"); System.out.print(" * "); System.out.print("Reputación: " + rep + "\n"); } }
对我来说,dineros 和rep 必须跳来跳去似乎有点疯狂,我确信有更好、更有效的方法来做到这一点(就像 printStats 直接从 main 获取变量一样),但我无法想象知道如何做。

谢谢

java methods
1个回答
0
投票
通常你会将这些变量作为成员变量放入类中;这是面向对象编程的主要思想之一:将数据与处理该数据的函数(方法)一起保存。然后,您可以在构造函数中初始化这些变量。

public class ACRE { private int dineros; private int rep; public static void main(String[] args) { ACRE game = new ACRE(1500, 100); game.startTrain(); } /** * Create a new game * * @param dineros an integer number for the user's current money * @param rep an integer number for the user's current reputation * */ public ACRE(int dineros, int rep) { // use this. to make clear you're setting the object's variables this.dineros = dineros; this.rep = rep; } public void startTrain() { printStats(); System.out.print("ur on a train. get off or nah etc etc"); } public void printStats() { System.out.print("Dinero: " + dineros + "D"); System.out.print(" * "); System.out.print("Reputación: " + rep + "\n"); } }
    
© www.soinside.com 2019 - 2024. All rights reserved.