2016-09-16 2 views
-1

Meine Aufgabe besteht darin, einen Überschuss von über 100 mit den angegebenen Werten zu summieren. Die Anweisungen für die Zuordnung sind wie folgt:.Array-Iteration: Summe des Überschusses (Java)

„Array testGrades NUM_VALS Testergebnisse enthält eine for-Schleife schreiben, die sumExtra auf die Gesamt zusätzliche Kredite erhalten setzt Voll Kredit beträgt 100, so etwas über 100 zusätzliche Kredite.. Bsp .: Wenn testGrades = {101, 83, 107, 90}, dann summiertExtra = 8, weil 1 + 0 + 7 + 0 gleich 8 ist.

Mein aktueller Code ist:

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

} 
+2

Und was ist die Frage? –

+0

Entschuldigung! Ich kann mir nicht vorstellen, wie ich den Überschuss nach% zusammenfassen soll. – Makodess

+2

Ich glaube, du suchst nach '+ =' – azurefrog

Antwort

5

Das Problem in der folgenden Zeile ist

sumExtra = (testGrades[i] % 100); 

Sie sind immer sumExtra einen neuen Wert zuweisen und nicht zusammen. Sie sollten es ersetzen mit

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

Dass gesagt wird, sollten Sie auch Ihre Modulo-Operation mit einem Minus ersetzen, um Ihren Code richtig funktioniert mit Werten größer als 199.

Sie auch Ströme nutzen könnten zu machen:

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