2016-03-28 27 views
0
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,我应该去的其他条件,对不对? 我最后一个问题是,在使用p += 3%1后,我的p仍然是1,那么我是否会返回到这个循环(因为p < 12),还是我退出循环并继续到第19行?我不知道该怎么做。

+0

x会在总和的归属后增加。 – Gunner

+0

感谢您的反馈。但我仍然不明白为什么sum = 4而不是5。你能再解释一下吗? – Hades

+0

x ++(递增)在当前指令之后完成,所以当计算总和时x是2。之后,它将变为3. – Gunner

回答

0

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

+0

事情是我弄清楚p = 1,但基本上我有关于第12行,这是要求我的总和混淆。我得到5但实际上是4.你知道那里发生了什么? – Hades

+0

当我得到p = 1后,我回到这个while循环吗?我如何摆脱这个while循环?它看起来好像p将保持为1。 – Hades

+0

经过4次第一次循环后,x将是6,然后,p将在语句p + = 4/2中重新赋值,这将给出p + = 2;那么每次循环通过时p都是3,5,7,9,11,13。当p = 13时,循环终止 – VinhNT

1

在第12行使用的是post incrementx++)。您应该使用预增量++x

增量增加当前值x在您的语句中,然后增加x

预先增加最初增加x,然后将结果放入您的帐单。