展开全部
package com.sun.test;
import java.util.List;
public class Student {
private String name; //学生姓名
private List subs;// 学生成绩
public Student(String name,List subs){
this.name = name;
this.subs = subs;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List getSubs() {
return subs;
}
public void setSubs(List subs) {
this.subs = subs;
}
}
(2)学科636f70793231313335323631343130323136353331333332633065类
package com.sun.test;
public class Subject {
private String subName; //学科名称
private int chenji;//学科成绩 整数型
public String getSubName() {
return subName;
}
public void setSubName(String subName) {
this.subName = subName;
}
public int getChenji() {
return chenji;
}
public void setChenji(int chenji) {
this.chenji = chenji;
}
public Subject(String subName,int chenji){
this.subName = subName;
this.chenji = chenji;
}
}
(3)比较实现类
package com.sun.test;
import java.util.Comparator;
public class SubJectCom implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Subject s1 = null, s2 = null;
if (o1 instanceof Subject) {
s1 = (Subject) o1;
}
if (o2 instanceof Subject) {
s2 = (Subject) o2;
}
if (s1.getChenji() < s2.getChenji())
return 1;
if (s1.getChenji() > s2.getChenji())
return -1;
return 0;
}
}
(4)最后的处理类,包含学生成绩初始化,学生初始化,以及最后的对应处理逻辑
package com.sun.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Subject yuwenA = new Subject("语文", 90);
Subject yuwenB = new Subject("语文", 75);
Subject yuwenC = new Subject("语文", 80);
Subject yuwenD = new Subject("语文", 95);
Subject shuxueA = new Subject("数学", 99);
Subject shuxueB = new Subject("数学", 66);
Subject shuxueC = new Subject("数学", 88);
Subject shuxueD = new Subject("数学", 44);
Subject yingyuA = new Subject("英语", 88);
Subject yingyuB = new Subject("英语", 96);
Subject yingyuC = new Subject("英语", 77);
Subject yingyuD = new Subject("英语", 93);
//上面是数据虚拟化过程,按道理应该从数据库中获取
List subsA = new ArrayList();
subsA.add(yuwenA);
subsA.add(shuxueA);
subsA.add(yingyuA);
List subsB = new ArrayList();
subsB.add(yuwenB);
subsB.add(shuxueB);
subsB.add(yingyuB);
List subsC = new ArrayList();
subsC.add(yuwenC);
subsC.add(shuxueC);
subsC.add(yingyuC);
List subsD = new ArrayList();
subsD.add(yuwenD);
subsD.add(shuxueD);
subsD.add(yingyuD);
Student sutA = new Student("A", subsA);
Student sutB = new Student("B", subsB);
Student sutC = new Student("C", subsC);
Student sutD = new Student("D", subsD);
//下面是具体的算法;
List stus = new ArrayList();
stus.add(sutA);
stus.add(sutB);
stus.add(sutC);
stus.add(sutD);
for (int i = 0; i < stus.size(); i++) {
Student stu = stus.get(i);
List sub = stu.getSubs();
int sumChenji = 0;
for (int j = 0; j < sub.size(); j++) {
sumChenji += sub.get(j).getChenji();
}
System.out.println("同学" + stu.getName() + "的三科平均成绩为" + sumChenji / sub.size());
}
List yuwenSub = new ArrayList();
List shuxueSub = new ArrayList();
List yingyuSub = new ArrayList();
yuwenSub.add(yuwenA);
yuwenSub.add(yuwenB);
yuwenSub.add(yuwenC);
yuwenSub.add(yuwenD);
shuxueSub.add(shuxueA);
shuxueSub.add(shuxueB);
shuxueSub.add(shuxueC);
shuxueSub.add(shuxueD);
yingyuSub.add(yingyuA);
yingyuSub.add(yingyuB);
yingyuSub.add(yingyuC);
yingyuSub.add(yingyuD);
aveSub(yuwenSub);
aveSub(shuxueSub);
aveSub(yingyuSub);
Collections.sort(yuwenSub, new SubJectCom());// 这里进行排序
System.out.println("语文学科最高分为:" + yuwenSub.get(0).getChenji());
Collections.sort(shuxueSub, new SubJectCom());// 这里进行排序
System.out.println("数学学科最高分为:" + shuxueSub.get(0).getChenji());
Collections.sort(yingyuSub, new SubJectCom());// 这里进行排序
System.out.println("英语学科最高分为:" + yingyuSub.get(0).getChenji());
}
public static void aveSub(List sub) {
if (sub.size() > 0) {
String subName = "";
int sumChenji = 0;
for (int i = 0; i < sub.size(); i++) {
sumChenji += sub.get(i).getChenji();
subName = sub.get(i).getSubName();
}
System.out.println(subName + "学科的平均成绩为" + sumChenji / sub.size());
}
}
}
希望对你有帮助。

已赞过
已踩过<
你对这个回答的评价是?
评论
收起