2014-10-07 2 views
-1

основном Im пытается сделать программу, которая позволяет учителю вводить классы для теста для каждого студента, то после того, как они введены ранги, которые она дает учителю сумму всех сортов они введеннуюКак получить сумму целочисленного arraylist?

public static void grades(){ 
    List<Integer> grade = new ArrayList<Integer>(); 
    int gradetotal = IntStream.of(grades).sum;/* sum */ 
    int gradelistnumber = 1; 
    int inputedgrade = 0; 

    while(inputedgrade != -1){ 
     System.out.println("Enter Grade for student " + gradelistnumber + " (1-50): "); 
     inputedgrade = sc.nextInt(); 
     grade.add(inputedgrade); 
     gradelistnumber++; 


    } 

    System.out.println("Class Average: " + gradetotal/50 * 100); 
} 

I Я пытаюсь выяснить, как получить сумму списка массивов .

+4

вам нужно показать нам пример того, что вы пробовали. – SpaceCowboy

+0

Вы еще смотрели API для ArrayList? – azurefrog

+0

* Просто добавьте его, но он, похоже, не работает с массивом * – Ibounes

ответ

4

Вот как вы просуммировать коллекции с помощью Java 8:

import java.util.ArrayList; 
import java.util.List; 

public class Solution { 

    public static void main(String args[]) throws Exception { 
     List<Integer> numbers = new ArrayList<>(); 
     numbers.add(1); 
     numbers.add(3); 
     numbers.add(5); 

     System.out.println(numbers.stream().mapToInt(value -> value).sum()); 
    } 
} 

В своем коде, вы могли бы сделать это в grade списке. Вы можете установить это значение gradetotalпосле вашей петли.

value -> value говорит: «Возьмите каждый аргумент и верните его». stream() возвращает Stream, который не имеет sum(). mapToInt возвращает IntStream, который делает есть sum(). То, что value -> value сообщает код, как преобразовать каждый элемент в Stream в Integer. Поскольку каждый элемент равен уже a Integer, нам просто нужно вернуть каждый элемент.

+0

, который сказал вам, что он использует java 8? – Alboz

+0

@ Албоз Кто вам сказал, что нет? –

+2

Или намного проще: 'numbers.stream(). MapToInt (i -> i) .sum();' – assylias

0

Вместо того, чтобы поддерживать массив, почему бы просто не сохранить две временные переменные - счет и суммирование?

int gradetotal = 0; 
int gradelistnumber = 0; 
int inputedgrade = 0; 
while(inputedgrade != -1){ 
    System.out.println("Enter Grade for student " + gradelistnumber + " (1-50): "); 
    inputedgrade = sc.nextInt(); 
    gradetotal = gradetotal + inputedgrade; 
    gradelistnumber++; 
} 
Смежные вопросы