【问题标题】:Variable does not increment in probability program变量在概率程序中不增加
【发布时间】:2024-01-18 13:16:01
【问题描述】:

我有三门课。一个超类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;
} 

【问题讨论】:

  • Java 是按值传递的(谷歌这意味着什么),所以这永远行不通。为什么你还需要py += 5 的方法?

标签: java for-loop increment probability


【解决方案1】:

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

当你进入方法时,会创建一个临时变量,一旦你退出它就会被销毁。

你应该让p成为一个类成员(阅读更多here),或者让方法返回结果,并分配给调用者,或者直接修改px,@ 987654331@和pz

【讨论】: