如何使用通过main方法更改的另一个类的值?

时间:2013-12-03 16:24:55

标签: java

我正在尝试创建一个独立运行的状态机。因此,您启动它并更改值,如果值低于或高于某个级别,则会更改State。但是我被困住了。

这是主要的:

public static void main(String[] args) {
    BankRobber br = new BankRobber(stR, 0, 100, 200);
    Cop cop = new Cop(stC, 0);
        br.changeRobberState();
        br.robberStats();
        br.checkRobberState();
        cop.changeCopState();
        cop.copStats();
        cop.checkCopState();
        }
}

这里有一个关于robberStats()如何工作的例子:

 if (st == robberState.ROBBINGBANK) {
 money += 1000;
 distanceToCop -= 20;
 energy -= 8;
}

BankRobber对象有三个不同的int值。金钱,能量和距离。 更改这些值的方法是robberStats()。根据它所处的状态而改变值。 我想在Cop类中使用distanceToCop值。但我不知道如何使用Cop中BankRobber类的distanceToCop值。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

通常的方法是,您将拥有某种Manager类,它将引用CopBankRobber通过 getters 并通过 setters 设置新值。因为它应该永远运行,你可能希望将行为置于某种(无限)循环中。

class Manager {
  private Cop cop;
  private BankRobber robber;

  public void run() {

    while (true /* or something else*/) {
      int distanceToCop = robber.getDistanceToCop();
      cop.updateState(distanceToCop);

      /* Maybe get something from cop now and call updateState on robber */
    }
  }
}

答案 1 :(得分:0)

在BankRobber类中声明一个公共静态变量distanceToCop。 通过从Cop类方法调用BankRobber.distanceToCop直接在Cop类中使用它。

答案 2 :(得分:0)

我明白了。我用getter和setter方法修复它。感谢您的提示