变量不会在概率程序中递增

时间:2015-04-24 16:50:42

标签: java for-loop increment probability

我有三节课。超类probability,子类Eating和转轮类Person

目标是在for循环中满足条件时“触发”某些方法。进食(方法dox)会增加可变重量。一旦体重大于120,那么被调用的dox的概率(int px)会减少,并且运动的概率(py)会增加,直到体重下降到阈值以下。

然而我的int px永远不会减少。为什么是这样?下面是我的降低概率方法和调用它们的触发器。

public void Trigger()
{
    if (weight >= 120)
    {
        dProb(px);
        dProb(pz);
        iProb(py);
    }
    if (weight <= 80)
    {
        dProb(py);
        iProb(px);
        iProb(pz);
    }


public void dProb(int p)
{
    p -= 5;
} 
public void iProb (int p)
{
    p += 5;
} 

1 个答案:

答案 0 :(得分:3)

p是方法dProb本地变量,它与p中的iProb不同。这意味着pxpzpy不受影响(Java始终按值传递 )。

当您输入方法时,会创建一个临时变量,并在退出时立即销毁。

你应该让p成为类成员(阅读更多here),或让方法返回结果,并将其分配给调用者,或者直接修改{ {1}},pxpy