4

我有一个包含 100 个数字的数组,我只给了数组偶数值。如何使用 WHILE LOOP 打印出必须添加多少个数组元素才能获得总和 < 小于 1768?以下是我到目前为止所拥有的,我被卡住了......提前感谢您的帮助

void setup() {

  int[] x = new int[100];
  int i=0;
  int sum=0;

  for(i=0; i<100; i++) {
    if (i%2==0) {
      x[i]=i;
      sum+=x[i];
    }
  }
}
4

5 回答 5

2

您可以使用此循环,元素编号为i+1.

       for(int i=0,k=0; k<1768; i++,k+=x[i]) {
        System.out.println(x[i]+" - "+k);
       }

虽然循环 -

   int i=0,k=0;
   while(k<1768; ) {
        System.out.println(x[i]+" - "+k);
        i++,k+=x[i];
       }
于 2012-10-15T14:56:41.467 回答
2
 void setup() {
     int i = 0;
     int sum = 0;
     int counter = 0;

     while (sum < 1768) {
         sum += i;
         i += 2;
         counter++;
     }

     System.out.println(counter);
 }

您从 0 的偶数索引开始。然后使用 跳过奇数i += 2
如果元素数量限制为 100,则添加i < 200while条件:

while (sum < 1768 && i < 200)

100 个偶数的数组将包含从 0 到 200 的数字。

该变量counter将包含执行的加法次数。它的值将等于i / 2,因此您可以删除该附加变量。

于 2012-10-15T15:06:18.683 回答
2

您正在跳过数组中的索引。您只是填充了每隔一个“槽”此外,使用 while 循环检查您的最大值(1728)可能会更容易

        int[] x = new int[100];
        int i = 0;
        int sum = 0;
        int max = 1728;

        while (sum < max && i < 100)
        {
            x[i] = i*2;
            if ((x[i] + sum) < max)
            {
                sum += x[i];
            }
            i++;
        }
于 2012-10-15T15:08:21.997 回答
1
void setup() {

  int[] x = new int[100];
  int maxValue = 1768;
  int i;
  int sum=0;

  while(sum<maxValue) {
    if (i%2==0) {
      x[i]=i;
      sum+=x[i];
      i++;
    }
  }

   System.out.println(i+" Elements needed")

}
于 2012-10-15T15:01:35.440 回答
-1

以下是代码:

void setup() {

  int[] x = new int[100];
  int i=0;
  int sum=0;

  for(i=0; i<100; i++) {
    if (i%2==0) {
      sum += i;
            if(sum<1768){

                 num +=1; 
            }
    }
  }
}
于 2012-10-15T14:56:16.147 回答