关于这个跟踪我有一些问题

hsgswve4  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(250)
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行?我不知道该怎么办。

gg0vcinb

gg0vcinb1#

在第12行中,您使用的是post increment( x++ ). 您应该使用预增量 ++x .
后置增量将 x 在你的陈述中,然后增加 x .
预增量最初增加 x 然后把结果写进你的陈述里。

uyhoqukh

uyhoqukh2#

在你第一次的时候,
3%1=0 p +=3%1 => p+=0 这就是为什么p仍然是1

相关问题