Java动态while表达式
我搞不清楚这件事。我有一个while语句,其中的表达式应该在每个循环中求值。我觉得我想得不对 我要做的是循环遍历表达式Java动态while表达式,java,loops,while-loop,Java,Loops,While Loop,我搞不清楚这件事。我有一个while语句,其中的表达式应该在每个循环中求值。我觉得我想得不对 我要做的是循环遍历表达式experience>=experienceCap,直到它为false。每个循环上的experienceCap设置正确,但是while表达式值永远不会更改,即使每个循环上的值确实更改 public void refreshExperience() { int experience = getExperience(); //10 int experienceCap
experience>=experienceCap
,直到它为false。每个循环上的experienceCap
设置正确,但是while
表达式值永远不会更改,即使每个循环上的值确实更改
public void refreshExperience() {
int experience = getExperience(); //10
int experienceCap = getExperienceCap(); //100
while (experience >= experienceCap) {
newExperienceCap();
refreshExperience();
}
}
这将导致一些日志输出,如:
experience: 10
experienceCap: 100
experience: 10
experienceCap: 450
experience: 10
experienceCap: 1120
experience: 10
experienceCap: 2337
不可避免的崩溃。
如果您有任何意见,我将不胜感激,谢谢 循环值没有更新,因此在输出中显示experienceCap增加是令人困惑的。在没有看到所有代码的情况下,我只能猜测您正在记录的值不是在RefreshExperice中声明的值
循环值没有被更新,因此在输出中显示experienceCap增加是令人困惑的。在没有看到所有代码的情况下,我只能猜测您正在记录的值不是在RefreshExperice中声明的值
这是典型的
值
vs参考
问题。
您似乎期望
int experience
是一个参考,但它不是。这是一个典型的值与参考
问题。
您似乎期望int experience
是一个引用,但它不是。您需要更新循环中的int值,可能只是在调用newExperienceCap()时返回experienceCap(),您可以发布newExperienceCap()的代码吗
您需要更新循环中的int值,调用newExperienceCap()时可能只返回experienceCap。请发布newExperienceCap()
Yes的代码,以便将experienceCap
始终设置为100
,对吗?为了回答您的问题,在我发布的代码newExperienceCap()
中设置了一个新的cap,这就是为什么您会看到带有新值的调试输出。因此,它会在每个循环中设置一个新值,但循环while语句表达式不会更新为该新值,而是停留在第一个值:10
Thanksys,这样就可以始终将experienceCap
设置为100
,对吗?为了回答您的问题,在我发布的代码newExperienceCap()
中设置了一个新的cap,这就是为什么您会看到带有新值的调试输出。因此,它会在每个循环中设置一个新值,但循环while语句表达式不会更新为该新值,而是停留在第一个值:10
谢谢
public class Test {
int experience = 10;
int experienceCap = 100;
public void refreshExperience() {
while (experience <= experienceCap) {
experience = getExperience();
experienceCap = getExperienceCap();
}
}
private int getExperience() {
return experience + 5;
}
private int getExperienceCap() {
return experienceCap - 10;
}