执行以下代码后,变量结果的值是多少?

时间:2016-01-17 16:56:20

标签: java loops

int count = 0, result = 0;
while(count <= 10)
{
    if(count % 2 ==0)
    {
        result = result + count;
    }
    else
    {
        result = 0;
    }
    count = count + 2;
}
System.out.println("Result: " + result); 

有人可以解释为什么答案是30?

4 个答案:

答案 0 :(得分:0)

首先,计数为00 % 2 == 0,因此执行if块(而不是else块)。 result + count评估为0,因此result设置为0。重复2count + 2),并将其result添加到2 % 2 == 0

对于count的每个值,count % 2 == 0的评估结果为true。这是因为您每次都将它递增2,因此它将始终保持均匀。因此,else完全冗余,应予删除。无论如何,你正在做的是将所有偶数总和到10(包括在内,当你使用<=时)。这是2 + 4 + 6 + 8 + 10 = 30,打印出来。

附注:如下所示的分配(其中v是变量,o是运算符,e是表达式)可以简化:

v = v o e;

基本上(有人可以把这个问题链接到解释涉及投射的差异吗?)等同于

v o= e;
算术运算符

答案 1 :(得分:0)

count0开始,并在每次迭代时添加数字2count等于或高于10时,循环停止。因此count的值为:

0, 2, 4, 6, 8, 10

这些都是偶数,所以count % 2 == 0将是真的。

result0开始,每次迭代count都会添加到其中。因此,最终result将是所有上述数字的总和。和

0 + 2 + 4 + 6 + 8 + 10 = 30

答案 2 :(得分:0)

我刚刚在你的代码中添加了两行代码,代码现在可以自我解释了。

int count = 0, result = 0;
    while(count <= 10)
    {
        if(count % 2 ==0)
        {
            result = result + count;
            System.out.println("count%2 " + count%2 + " and Count is " + count + " and Result is " + result);
        }
        else
        {
            result = 0;
            System.out.println("count%2 " + count%2 + " Count is " + count + " and Result is " + result);
        }
        count = count + 2;
    }
    System.out.println("Result: " + result);

并在输出后打印到控制台

count%2 0 and Count is 0 and Result is 0
count%2 0 and Count is 2 and Result is 2
count%2 0 and Count is 4 and Result is 6
count%2 0 and Count is 6 and Result is 12
count%2 0 and Count is 8 and Result is 20
count%2 0 and Count is 10 and Result is 30
Result: 30

我希望这会有所帮助。

答案 3 :(得分:0)

它只是将每个偶数result从0增加到10 。通过将这些数字加在一起,您就可以 30

偶数0到10之间的数字包括:

0, 2, 4, 6, 8, 10

将它们全部添加起来,你得到:

0 + 2 + 4 + 8 + 10 = 30

您可以通过跟踪 result随时证明。见下文。

int count = 0, result = 0;
do {
    if (count % 2 == 0) {
        System.out.println("Result went from " + result + " to " + (result += count));
        continue;
    }
    result = 0;
    System.out.println("Result is now " + 0);
} while ((count += 2) <= 10);
System.out.println("Result: " + result);