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

数组迭代:多余的总和(Java),java,Java,我的任务是把超过100分的分数加起来。作业说明如下: 数组testGrades包含NUM\u VALS测试分数。编写一个for循环,将sumExtra设置为收到的总额外积分。满分是100分,所以超过100分的都是额外的学分。例如:如果testGrades={101,83,107,90},那么sumtextra=8,因为1+0+7+0是8 我目前的代码是: import java.util.Scanner; public class SumOfExcess { public stati

我的任务是把超过100分的分数加起来。作业说明如下:

数组testGrades包含NUM\u VALS测试分数。编写一个for循环,将sumExtra设置为收到的总额外积分。满分是100分,所以超过100分的都是额外的学分。例如:如果testGrades={101,83,107,90},那么sumtextra=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();

问题是什么?对不起!我不太明白如何将%之后的超额加起来。我想你在找+=Change-sumtera=testGrades[I]%100;至sumExtra+=testGrades[i]%100;成功了!非常感谢你。