0

My assignment is to sum up any excess over 100 with the scores given. The instructions for the assignment are as follows:

"Array testGrades contains NUM_VALS test scores. Write a for loop that sets sumExtra to the total extra credit received. Full credit is 100, so anything over 100 is extra credit. Ex: If testGrades = {101, 83, 107, 90}, then sumExtra = 8, because 1 + 0 + 7 + 0 is 8."

My current code is:

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;
    }

}
6
  • 2
    And what is the question? Commented Sep 16, 2016 at 15:42
  • Sorry! I can't quite figure out how to sum up the excess after %.
    – Makodess
    Commented Sep 16, 2016 at 15:45
  • 2
    I think you're looking for +=
    – azurefrog
    Commented Sep 16, 2016 at 15:46
  • Change sumExtra = (testGrades[i] % 100); to sumExtra += (testGrades[i] % 100);
    – birraa
    Commented Sep 16, 2016 at 15:47
  • That worked! Thank you so much.
    – Makodess
    Commented Sep 16, 2016 at 15:48

2 Answers 2

8

The issue is in the following line

sumExtra = (testGrades[i] % 100);

You are always assigning sumExtra a new value and not summing up. You should replace it with

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

That being said, you should also replace your modulo operation with a minus to make your code work correctly with values larger than 199.

You could also use streams:

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

Here is my answer! You almost had it, just change to

  sumExtra = 0;
  for (i = 0; i < NUM_VALS; ++i){
     if (testGrades[i] > 100){ 
        sumExtra += (testGrades[i] % 100);  // you had just =, but should be +=
     }
  }

Not the answer you're looking for? Browse other questions tagged or ask your own question.