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?
答案 0 :(得分:0)
首先,计数为0
。 0 % 2 == 0
,因此执行if
块(而不是else
块)。 result + count
评估为0
,因此result
设置为0
。重复2
(count + 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)
count
从0
开始,并在每次迭代时添加数字2
。 count
等于或高于10
时,循环停止。因此count
的值为:
0, 2, 4, 6, 8, 10
这些都是偶数,所以count % 2 == 0
将是真的。
result
从0
开始,每次迭代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);