int time=0;
int x=1;
int w=2;
int y=1;
int h=1;
int t=6;
while (x != w && y != h) {
boolean s = Abc (a,b,c,time);
if (s == true) {
time = time+t;
x++;
}
else if (s = false) {
time = time++;
}
}
System.out.println(time);
这是我为学校编写的程序的一部分,我的问题是,当程序进入 while 循环时,无论我在循环中做什么,当它退出并打印变量“time”时,值都是相同的作为一开始设置的值。我错过了什么吗? (BTW Abc只是一个方法,在我第一次进入循环时应该返回值true,所以时间的值应该改为时间+t)
最佳答案
s = false
是赋值,不是比较。无论如何,您不需要测试s == false
,您只需要一个else
子句(因为原始条件检查s == true
).- 没有理由将
time++
的结果赋给time
,因为它会撤消增量(后增量运算符返回变量的前一个值,所以当你将该值赋回给变量,你就取消了增量)。
改变
else if (s = false) {
time = time++;
}
到
else {
time++;
}
编辑:
正如 Anthony Grist 评论的那样,即使在这些修复之后,整个 while 循环也根本不会执行,因为 y==h
在开头。
关于java - while循环不会改变变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33610000/