如何获得Integer arraylist的总和?

时间:2014-10-07 17:56:22

标签: java arrays arraylist sum java.util.scanner

基本上我试图制作一个程序,允许教师为每个学生输入考试成绩,然后在他们输入成绩后,它会给教师一个他们输入的所有成绩的总和

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

我正在试图弄清楚如何获得数组列表成绩的总和。

2 个答案:

答案 0 :(得分:5)

以下是使用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说&#34;拿出每个参数并将其返回&#34;。 stream()会返回Stream,而sum()没有mapToIntIntStream会返回sum() 拥有value -> valueStream告诉代码如何将Integer中的每个元素转换为Integer。因为每个元素已经一个{{1}},所以我们只需要返回每个元素。

答案 1 :(得分: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++;
}