首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java获取数组列表中某些元素的平均值

Java获取数组列表中某些元素的平均值
EN

Stack Overflow用户
提问于 2021-03-13 03:21:48
回答 3查看 329关注 0票数 0

我是Java新手,我正在编写一个程序,用于管理学生、他们的科目和该科目的成绩。

代码询问学生的详细信息,然后将所有信息保存到Arraylist中。我试图得到一门科目的平均成绩,但没有成功,我已经计算了某个学生的平均成绩,但获得某一科目的所有成绩,然后计算平均成绩,这超出了我的理解。

这是我用来创建数组列表的代码:

代码语言:javascript
运行
复制
public class options {

public String name;

public ArrayList<students> studentlist = new ArrayList<students>(10);  

    public String createstudent(String name, String subject, Float rade1, Float grade2, Float grade3) {
        studentlist.add(new students(name, subject, grade1, grade2, grade3);
        return "The student has been added to the database. ";
    }
}

这是学生类的代码:

代码语言:javascript
运行
复制
public class students{
    
    public String name;
    public String subject;
    public Float grade1;  
    public Float grade2;  
    public Float grade3;
    
   public students(String name, String subject, Float grade1, Float grade2, Float grade3) {
        
        this.name= name;
        this.subject= subject;
        this.grade1= grade1;
        this.grade2= grade2;
        this.grade3= grade3;
    }
}   

我试过像这样的东西

代码语言:javascript
运行
复制
public double getAverageValue(){
  double averageValue = 0;
  double sum = 0;

  if(studentlist.size() > 0){
    for ( int i=0; i < studentlist.size() ; i++) {
      sum += studentlist.get(i).getname().getgrade1().getgrade2().getgrade3();
    }
    averageValue = (sum / (double)studentlist.size())
  }

  return averageValue;
}

但我不知道如何只选择某一科目的成绩,而不是所有学生的所有成绩,所以我有点卡住了。

编辑:

基于这里的答案和我已经完成的一些工作,这是最终的代码:

代码语言:javascript
运行
复制
public String showAverageGrade(String clase){
        int countstudents =0;
        double studentaverage =0;

        for(int i=0 ; i < studentlist.size();i++){
            if(studentlist.get(i).asksubject().equals(subject)){
                studentaverage +=studentlist.get(i).studentaverage ();
                countstudents++;

            }
        }
        return "The average grade of " + subject + " is " + (studentaverage / countstudents) + ".";

    }  

英语不是我的第一语言,所以任何错误都是因为我翻译了它。

感谢大家的反馈。

EN

Stack Overflow用户

发布于 2021-03-13 03:58:01

构建它的正确方法是,首先,您需要将Student抽象为一个类。简单的方法是在主类中创建一个数组属性students,在Student类中它将有一个名为subjects的属性Map来放置一个键(主题名称)和值(成绩)。

如果我理解正确,你需要将一些学生放在主数组中,他们的成绩,然后计算每个科目所有这些学生的平均值,要计算这一点,你需要创建另一个Map,并通过键(主题)和所有出现的事件进行交互,然后按计数拆分。

以一种简单的方式,你已经知道所有的主题类型,如果你不知道,它将更加复杂,在calculate之前,你需要另一个没有重复类型的列表来过滤和交互,也许这里解释了一种创建没有重复类型的新列表的方法:https://www.baeldung.com/java-remove-duplicates-from-list

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66605982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档