【java基础】统计学生成绩

需求:用TreeSet集合存储多个学生信息(姓名,语文成绩,数学成绩),并遍历该集合
要求:按照总分从高到低出现

先定义一个学生类

package ysy11;

public class Student {

    private String name;
    private int ChineseScore;
    private int MathScore;

    public Student() {
    }

    public Student(String name, int chineseScore, int mathScore) {
        this.name = name;
        ChineseScore = chineseScore;
        MathScore = mathScore;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getChineseScore() {
        return ChineseScore;
    }

    public void setChineseScore(int chineseScore) {
        ChineseScore = chineseScore;
    }

    public int getMathScore() {
        return MathScore;
    }

    public void setMathScore(int mathScore) {
        MathScore = mathScore;
    }

    //创建一个总分
    public int getSum(){
        return  this.ChineseScore+this.MathScore;
    }
}

测试类
注意主要条件和次要条件

package ysy11;

import java.util.Comparator;
import java.util.TreeSet;

public class TreeSetDemo {
    public static void main(String[] args) {
        TreeSet<Student> ts=new TreeSet<>(new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                //主要条件:比较两个人的总分this--s1,s--s2按从高往低排名
                int num=s2.getSum()-s1.getSum();
                /*
                次要条件1:如果总分相同,即num==0,则比较语文分数
                按语文分数从高往低排名
                */
                int num2=num==0?s2.getChineseScore()- s1.getChineseScore():num;
                /*
                次要条件2:如果总分相同,且各科分数都相同,则比较姓名
                姓名不同按字母排序
                */
                int num3=num2==0?s1.getName().compareTo(s2.getName()):num2;
                return num3;
            }
        });

        //创建学生对象
        Student s1 =new Student("西施",87,68);
        Student s2 =new Student("貂蝉",78,83);
        Student s3 =new Student("杨玉环",66,75);

        Student s4 =new Student("王昭君",76,65);
        Student s5 =new Student("小鱼",78,83);

        //把学生添加到集合
        ts.add(s1);
        ts.add(s2);
        ts.add(s3);
        ts.add(s4);
        ts.add(s5);

        //遍历集合
        for(Student s:ts){
            System.out.println(s.getName()+"的语文成绩是"+s.getChineseScore()+",数学成绩是"+s.getMathScore()+",总分是"+s.getSum());
        }
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java统计学生成绩可以通过以下步骤实现: 1. 创建一个包含学生成绩的数组或集合,可以使用数组、ArrayList等数据结构来存储学生成绩。 2. 遍历数组或集合,计算总分、平均分、最高分和最低分等统计指标。 3. 可以使用循环结构和条件判断语句来实现遍历和统计操作。 4. 可以使用Java的数学库(如Math类)来进行数值计算,例如计算平均分。 5. 可以使用Java的排序算法(如Arrays.sort()方法)对成绩进行排序,以便找出最高分和最低分。 6. 可以使用条件判断语句来判断学生是否及格或优秀等。 下面是一个简单的示例代码,用于统计学生成绩: ```java import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class GradeStatistics { public static void main(String[] args) { // 创建学生成绩列表 List<Integer> grades = new ArrayList<>(Arrays.asList(80, 90, 70, 85, 95)); // 统计总分 int total = 0; for (int grade : grades) { total += grade; } // 计算平均分 double average = (double) total / grades.size(); // 找出最高分和最低分 int maxGrade = Integer.MIN_VALUE; int minGrade = Integer.MAX_VALUE; for (int grade : grades) { if (grade > maxGrade) { maxGrade = grade; } if (grade < minGrade) { minGrade = grade; } } // 输出统计结果 System.out.println("总分:" + total); System.out.println("平均分:" + average); System.out.println("最高分:" + maxGrade); System.out.println("最低分:" + minGrade); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知野小兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值