Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取整数数组列表的和?_Java_Arrays_Arraylist_Sum_Java.util.scanner - Fatal编程技术网

Java 如何获取整数数组列表的和?

Java 如何获取整数数组列表的和?,java,arrays,arraylist,sum,java.util.scanner,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

基本上,我正在尝试制作一个程序,允许老师为每个学生的考试输入分数,然后在他们输入分数后,它会给老师一个他们输入的所有分数的总和

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);
}
公共静态无效等级(){
列表等级=新的ArrayList();
int gradetotal=IntStream.of(grades).sum;/*sum*/
int gradelistnumber=1;
int INPUTEGRADE=0;
while(输入等级!=-1){
System.out.println(“为学生输入成绩”+成绩列表编号+”(1-50):”;
InputGrade=sc.nextInt();
等级。添加(输入的等级);
gradelistnumber++;
}
系统输出打印项次(“班级平均:+gradetotal/50*100);
}

我试图找出如何获得数组列表等级的总和。

与其维护数组,为什么不保留两个临时变量——计数和总和

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

以下是如何使用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());
    }
}
import java.util.ArrayList;
导入java.util.List;
公共类解决方案{
公共静态void main(字符串args[])引发异常{
列表编号=新的ArrayList();
增加(1);
增加(3);
增加(5);
System.out.println(numbers.stream().mapToInt(value->value.sum());
}
}
在代码中,您可以对
等级
列表执行此操作。循环后,您可以将其设置为
gradetotal


value->value
是说“获取每个参数并返回它”
stream()
返回一个
,该流没有
sum()
mapToInt
返回一个
IntStream
,该没有
sum()
value->value
告诉代码如何将
中的每个元素转换为
整数
。因为每个元素已经是一个
整数
,所以我们只需返回每个元素

您需要向我们展示一个您尝试过的示例。您看过ArrayList的API了吗?刚刚添加了它,但它似乎不适用于数组列表。此外,您的value gradelistnumber将显示比ArrayList中的实际分数大1。您不需要变量,因为ArrayList API有用于查找计数的方法(变量)。@azurefrog是的,我没有找到任何用于获取总和的方法。或者更简单一些:
numbers.stream().mapToInt(I->I.sum()
@assylias nice,我对新的Java 8 API不太熟悉,我会更新。@assylias我很奇怪,我不能将
Function.identity()
传递到
mapToInt
@tietytit,如果你想避免自动取消装箱,可以使用
mapToInt(Integer::intValue)
。对于Function.identity,您可以使用
Function.identity()::apply
,这有点难看(不确定为什么我们需要在这种情况下显式设置目标类型)。