【发布时间】:2018-09-30 00:58:32
【问题描述】:
我实现的代码就像一个简单的时钟,在我的课堂上每次都应该增加 1。到目前为止,这就是我在主程序中的内容:
public static void main(String[] args) {
BoundedCounter counter = new BoundedCounter(60);
System.out.println("Value at start: " + counter);
int i = 0;
while (i < 10) {
counter.next();
System.out.println("Value: " + counter);
i++;
}
}
这里是“BoundedCounter”类:
class BoundedCounter {
private int value;
private int upperBound;
public BoundedCounter(int upperBound) {
this.upperBound = upperBound;
this.value = 0;
}
public void next () {
if (value++ > upperBound) {
value = 0;
} else {
value++;
}
}
public String toString() {
return "" + value;
}
}
这段代码的输出是:
Value at start: 0
Value: 2
Value: 4
Value: 6
Value: 8
Value: 10
Value: 12
Value: 14
Value: 16
Value: 18
Value: 20
我不明白为什么它增加了 2,而在课堂上的 while 语句有 value++;这意味着它应该增加 1。
我在这里错过了什么?
【问题讨论】:
-
您在
next()中调用了两次value++。 -
if(value++){} else{value++}你做两次 -
因为您正在执行
++两次:一次在if (value++ ...中,然后在几行之后的else块中。 -
即使在
if的条件下,您使用的是value++,即使在该行执行后条件不满足,它也会增加值,这就是它增加2的原因
标签: java while-loop int increment