public class Task {
public static void main(String args[]) {
int x = 0, p = 0, sum = 0;
p = 1;
x = 2;
double q;
sum = 0;
while (p < 12) {
q = x + p - (sum + 5 / 3) / 3.0 % 2;
sum = sum + (x++) + (int) q;
System.out.println(sum);
if (x > 5)
p += 4 / 2;
else
p += 3 % 1;
}
sum = sum + p;
System.out.println(sum);
}
}
去12号线的时候( sum = sum + (x++) + (int)q;
)我以为和应该是5,但实际上输出是4。我尝试了交互窗格中的第12行,确实看到了这一点 sum=4
. 我不明白。不应该 x++
得到3(x=2),如果这个加上(int)q(双q给了我2.666666),我应该得到5。有人能解释一下发生了什么事吗?
另外,在获得第一个输出之后,我应该如何继续?下一个条件是:
if (x > 5)
p += 4 / 2;
else
p += 3 % 1;
既然x<5,我就应该选择else条件,对吗?我的最后一个问题是 p += 3%1
,我的p仍然是1,那么我是返回到这个循环(因为p<12)还是离开这个循环继续到第19行?我不知道该怎么办。
2条答案
按热度按时间gg0vcinb1#
在第12行中,您使用的是post increment(
x++
). 您应该使用预增量++x
.后置增量将
x
在你的陈述中,然后增加x
.预增量最初增加
x
然后把结果写进你的陈述里。uyhoqukh2#
在你第一次的时候,
3%1=0
p +=3%1
=>p+=0
这就是为什么p仍然是1