我的最终结果与while循环的预期结果不匹配

时间:2013-10-22 09:28:47

标签: java while-loop

import java.util.Scanner;
public class CHP4Ex
{
     public static void main(String[] args)
     {
          Scanner scan = new Scanner(System.in);
          System.out.println("enter a n: ");
          int n = scan.nextInt();
          int i=0;
          int sum=0;
          while ((i%2 == 0 && i<=n))
          {
             sum = sum + i;
             i++;
          }
          System.out.println(sum);
     }
}

我想: 写一个循环,计算2到100(含)之间所有偶数的总和。

但是,我输入的任何内容都会给出0而不是预期结果的答案。

10 个答案:

答案 0 :(得分:1)

此循环在 i = 1 处停止,因此结果为:

while ((i%2 == 0 && i<=n)) { //when i = 1, i%2!=0 -> stop
  sum = sum + i;
  i++;
}

你应该使用for循环:

 for(int i=0;i<n;i+=2) {
   sum+=i;
 }

答案 1 :(得分:1)

试试这个,

       while (i <= n)
        {
            if (i % 2 == 0)
            {
                sum = sum + i;
            }
            i++;
        }

for循环,

        for (int j = i; j <= n; j += 2)
        {
            sum = sum + j;
        }

答案 2 :(得分:1)

你的while循环有问题。一旦我变成1,它就会出现

试试这个

while(i<=n) {
  if(i%2==0)
    sum+=i;
  i++
}

答案 3 :(得分:0)

第一次我是奇数(在1)循环将退出

while ((i%2 == 0 && i<=n)) <<- i%2 == 0 causing problems

因此答案总是为零。

你想要循环中i的范围,但if语句中的均匀条件;所以

      while (i<=n)
      {
         if (i%2 == 0){
             sum = sum + i;
         }
         i++;
      }

虽然for循环当然更适合在范围内运行

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

当然这有点不尽如人意,最好还是跳过所有奇数

for(int i=0;i<n;i+=2){
     sum = sum + i;
}

但正如你可以通过公式直接做到这一点我假设这可以扩展到更复杂的条件

答案 4 :(得分:0)

我输入的任何内容都会给出0而不是预期结果的答案。
因为循环结束于i=1

答案 5 :(得分:0)

在While循环中拆分条件。因为你使用&amp;&amp;运算符,这两个语句必须始终为真。当i = 1时,第一个条件失败并且循环中止。

只将i&lt; = n置于循环条件中,然后将if(i%2)放在Sum的附加处。

答案 6 :(得分:0)

while循环中的exit子句是错误的。在第二次迭代时, i 将为1,而 i%2 == 0 将为false。有你的问题。

答案 7 :(得分:0)

你在while循环中的条件是错误的:

while ((i%2 == 0 && i<=n)) ...

它只是将0添加到sum,然后退出while循环。确实在第二次迭代:

i % 2 == 0 // i = 1; 1 % 2 == 0 is FALSE 

请改用:

sum = 0;
for (int i = 0; i <= n; i+=2) {
    sum += i;
}

答案 8 :(得分:0)

简单的错误!你有&&循环!所以i=1的第一个条件失败了,因此你就摆脱了循环!

答案 9 :(得分:0)

有几个答案指出偶数测试是第一次退出。问题是两个测试无关。您希望在达到限制时退出。并且你想在偶数时添加。分开两个测试

import java.util.Scanner;

public class CHP4Ex
{
     public static void main(String[] args)
     {
          Scanner scan = new Scanner(System.in);
          System.out.println("enter a n: ");
          int n = scan.nextInt();
          int i=0;
          int sum=0;
          while (i<=n)
          {
              if (i%2 == 0)
              {
                  sum = sum + i;
              }
              i++;
          }
          System.out.println(sum);
     }
}