变量在概率程序中不递增
Variable does not increment in probability program
我有三个 class。超级class probability
、次级class Eating
和亚军class Person
.
目标是某些方法在 for 循环中满足条件时 "triggered"。进食(方法dox)会增加可变重量。一旦 weight 大于 120,则 dox 被调用的概率 (int px
) 降低,运动的概率 (py
) 增加,直到 weight 低于阈值。
但是我的 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;
}
p
是方法 dProb
的 local 变量,它与 iProb
中的 p
不同.这意味着 px
、pz
和 py
不受影响(Java 通过 值 ,总是)。
当你进入该方法时,会创建一个临时变量,并会在你退出时立即销毁。
您应该让 p
成为 class 成员 (阅读更多 here),或者让方法 return结果,赋值给调用者,或者直接修改px
、py
和pz
.
我有三个 class。超级class probability
、次级class Eating
和亚军class Person
.
目标是某些方法在 for 循环中满足条件时 "triggered"。进食(方法dox)会增加可变重量。一旦 weight 大于 120,则 dox 被调用的概率 (int px
) 降低,运动的概率 (py
) 增加,直到 weight 低于阈值。
但是我的 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;
}
p
是方法 dProb
的 local 变量,它与 iProb
中的 p
不同.这意味着 px
、pz
和 py
不受影响(Java 通过 值 ,总是)。
当你进入该方法时,会创建一个临时变量,并会在你退出时立即销毁。
您应该让 p
成为 class 成员 (阅读更多 here),或者让方法 return结果,赋值给调用者,或者直接修改px
、py
和pz
.