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%2 == 0 && i<=n))
          {
             sum = sum + i;
             i++;
          }
          System.out.println(sum);
     }
}

やりたいこと: 2 から 100 (両端を含む) までのすべての偶数の合計を計算するループを書きます。

ただし、何を入力しても、意図した結果ではなく、0 の回答が得られます。

4

10 に答える 10

1

while ループに問題があります。1になるとすぐ出てくる

これを試して

while(i<=n) {
  if(i%2==0)
    sum+=i;
  i++
}
于 2013-10-22T09:35:00.070 に答える
1

これを試して、

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

forループ、

        for (int j = i; j <= n; j += 2)
        {
            sum = sum + j;
        }
于 2013-10-22T09:33:17.097 に答える
1

while ループの条件が間違っています:

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

0 を追加してループsumを終了します。while実際、2回目の繰り返しで:

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

代わりにこれを使用してください:

sum = 0;
for (int i = 0; i <= n; i+=2) {
    sum += i;
}
于 2013-10-22T09:33:34.160 に答える
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;
 }
于 2013-10-22T09:30:56.750 に答える
0

whileループ内で条件を分割します。演算子を使用しているため&&、両方のステートメントが常に true である必要があります。ではi=1、最初の条件が失敗し、ループが中止されます。

のみi<=nをループ条件に入れif(i%2)て、 の追加の周りに配置しSumます。

while (i<=n)
{
    if (i%2 == 0)
    {
        sum = sum + i;
    }
    i++;
}
于 2013-10-22T09:32:59.937 に答える
0

ワイループからの終了句が間違っています。2 回目の反復でiは 1 になり、i%2 == 0は false になります。あなたの問題があります。

于 2013-10-22T09:33:07.067 に答える
0

初めて i が奇数 (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;
}

しかし、数式で直接これを行うことができるので、これはより複雑な条件に拡張される可能性があると想定しています

于 2013-10-22T09:31:11.397 に答える
0

いくつかの回答は、偶数テストが初めて終了することを指摘しています。問題は、2 つのテストが関連していないことです。限界に達したときに終了したい。そして、偶数のときに追加します。2 つのテストを分離する

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);
     }
}
于 2013-10-22T09:37:02.127 に答える
0

何を入力しても、意図した結果ではなく、0 の回答が返されます。
ループが終了するためi=1

于 2013-10-22T09:31:48.670 に答える
0

単純ミス!あなたは&&ループしています!したがって、最初の条件が に対して失敗するためi=1、ループから抜け出します!

于 2013-10-22T09:33:55.443 に答える