2016-09-16 3 views
-1

Мое задание состоит в том, чтобы суммировать любое превышение свыше 100 с учетом полученных баллов. Инструкции по заданию являются следующими:.Итерация массива: сумма избытка (Java)

«Массив testGrades содержит NUM_VALS тесты Написать цикл, который устанавливает 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; 
    } 

} 
+2

И в чем вопрос? –

+0

Извините! Я не могу понять, как суммировать избыток после%. – Makodess

+2

Я думаю, что вы ищете '+ =' – azurefrog

ответ

5

Проблема заключается в следующей строке

sumExtra = (testGrades[i] % 100); 

Вы всегда присваивающей sumExtra новое значение, а не подведению. Вы должны заменить его

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

, как говорится, вы должны также заменить операцию по модулю с минусом, чтобы сделать ваш код работать правильно со значениями больше, чем 199.

Вы также можете использовать потоки:

sumExtra = IntStream.of(testGrades).filter(t -> t > 100).map(t -> t - 100).sum(); 
Смежные вопросы