数组迭代:多余的总和(Java)

Makodess

我的任务是用给定的分数将超过100的部分相加。分配说明如下:

“数组testGrades包含NUM_VALS个测试分数。编写一个for循环,将sumExtra设置为收到的总额外学分。全学分是100,所以超过100的任何东西都是额外学分。例如:如果testGrades = {101,83,107,90},那么sumExtra = 8,因为1 + 0 + 7 + 0是8。”

我当前的代码是:

import java.util.Scanner;

public class SumOfExcess {

    public static void main (String [] args) {
      final int NUM_VALS = 4;
      int[] testGrades = new int[NUM_VALS];
      int i = 0;
      int sumExtra = -9999; // Assign sumExtra with 0 before your for loop

      testGrades[0] = 101;
      testGrades[1] = 83;
      testGrades[2] = 107;
      testGrades[3] = 90;

      sumExtra = 0;
      for (i = 0; i < NUM_VALS; ++i){
         if (testGrades[i] > 100){ 
            sumExtra = (testGrades[i] % 100);
         }
      }

      System.out.println("sumExtra: " + sumExtra);

      return;
    }

}
弗洛里安链接

问题在以下行中

sumExtra = (testGrades[i] % 100);

您总是在分配sumExtra一个新值而不是求和。您应该将其替换为

sumExtra += (testGrades[i] % 100);

话虽如此,您还应该用负号代替模运算,以使代码在大于199的值时正常工作。

您还可以使用流:

sumExtra = IntStream.of(testGrades).filter(t -> t > 100).map(t -> t - 100).sum();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章