if(条件||条件)vs if(条件)if(条件)

时间:2018-11-25 01:21:33

标签: java if-statement

我刚刚开始Euler项目,我已经遇到了一些问题。 为什么这些方法会产生不同的结果?

int sum=0;
for (int i=0;i<n;i++)
{
if(i%3==0 || i%5==0)
    sum+=i;
}

int sum=0;
for (int i=0;i<n;i++)
{
if(i%3==0)
   sum+=i;
if (i%5==0)
   sum+=i;
}

2 个答案:

答案 0 :(得分:2)

第一个将是i%3还是i%5。 即使两者都正确,它也只会执行一次。

第二个,如果两个都成立,将执行sum + = i两次:

30%3 = 0 and 30%5 = 0

所以这两个都将被执行:

if(i%3==0)
   sum+=i;
if (i%5==0)

答案 1 :(得分:1)

首先,任何比较都满足以执行该语句就足够了。如果第一个比较为真,则将不再进行第二个比较。这是因为True或[boolean]始终为true。也就是说,在由一个真值加入或存在一个真值的比较序列中,结果始终为真就足够了。

在第二个中,始终评估两个条件。并且根据这些评估结果,是否执行句子。