ArrayList有两个元素,是否有可能找到int元素的平均值?

时间:2016-03-13 18:41:23

标签: java arraylist average

这个小项目由两个类和一个ArrayList组成。 ArrayList有两个元素:namescore。是否可以找到元素score的平均值?

班级classroom

/**
 * This class creates the names and scores of the students
 */
public class Classroom
{
public int score;
public String name;

/**
 * Constructor for the Class that adds a name and a score.
 */
public Classroom(String aName, int aScore)
{
    score = aScore;
    name = aName;
}

/**
 * Return the name of the students
 */
public String returnName()
{
    return name;
}

/**
 * Return the scores
 */
public int returnScore()
{
    return score;
}
}

班级TestScores

import java.util.ArrayList;
/**
 * Print test scrose and student names as well as he average for the class.
 */
public class TestScores
{
private ArrayList<Classroom> scores;
public int studentScores;

/**
 * Create a new ArrayList of scores and add some scores
 */
public TestScores()
{
    scores = new ArrayList<Classroom>();
}

/**
 * Add a new student and a new score.
 */
public void add (String name, int score)
{
    scores.add(new Classroom(name, score));
        if(score > 100){
            System.out.println("The score cannot be more than 100");
        }

}

您是否能够为每个循环使用a,创建一个局部变量来存储教室类中returnScore方法的学生分数并将其除以数组大小?

4 个答案:

答案 0 :(得分:4)

使用Java 8流,这应该做的工作

public double getAvg(){
    return scores.stream()
                 .mapToInt(x -> x.returnScore())
                 .average()
                 .getAsDouble();
}

答案 1 :(得分:3)

如果您returnScore()中的每个元素都scores,并将每个returnScore()添加到局部变量,然后将该变量除以scores.Size(),那么应该得到你想要的东西。如果我误解了这个问题,请告诉我。在TestScores类中执行此操作。

答案 2 :(得分:1)

简单的解决方案是在数组列表上运行for循环并计算得分总和除以数组大小。

但是在TestScores类或其他类中执行此操作。 ClassRoom是个人分数,因此您无法存储该课程的总分或平均分。

其次你的建模不正确。你称之为ClassRoom,而它只能有一个学生及其分数。

另外在您的添加方法中,您的分数检查&gt; 100是你添加分数后。您应该先检查,如果不大于100,则只添加到列表中。

答案 3 :(得分:0)

另一种方法是在Classroom类中添加两个静态变量: totalScore totalStudents 。然后在Classroom的构造函数中增加这两个变量(totalScore ++,totalStudents ++)。 最后,您可以在类Classroom中创建静态方法以获得平均值:

public static double getAverage(){
    return (double)totalScore/(double)totalStudents;
}