有个ArrayList,里面存3000学生成绩对象,如
class StuGra{
String stuName;//学生名字
String courseName;//课程名称
Integer courseRes;//该课程的成绩
}
里面一个学生因选多门课程就拥有多个StuName对象。
要求用最有效率的代码实现:
以这种格式在控制台输出结果:
StuName(学生名) total(总分) avg(平均分)
class StuGra{
String stuName;//学生名字
String courseName;//课程名称
Integer courseRes;//该课程的成绩
}
里面一个学生因选多门课程就拥有多个StuName对象。
要求用最有效率的代码实现:
以这种格式在控制台输出结果:
StuName(学生名) total(总分) avg(平均分)
楼主【ahujyy】截止到2008-08-02 16:38:29的历史汇总数据(不包括此帖):
发帖的总数量:10 发帖的总分数:70 每贴平均分数:7
回帖的总数量:16 得分贴总数量:4 回帖的得分率:25%
结贴的总数量:10 结贴的总分数:70
无满意结贴数:6 无满意结贴分:65
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:60.00 % 无满意结分率:92.86 %
敬礼!
取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=ahujyy
我写错了
里面一个学生因选多门课程就拥有多个StuGra对象。
按姓名排序后 怎么判断有几个连续的对象呢?这样才能算总和和均值啊
能详细点么。
肯定不是效率最好的,不过结果是对的你看下吧。。package com.zhangkai.test;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;class StuGra {
String stuName;// 学生名字
String courseName;// 课程名称
int courseRes;// 该课程的成绩 public String getStuName() {
return stuName;
} public void setStuName(String stuName) {
this.stuName = stuName;
} public String getCourseName() {
return courseName;
} public void setCourseName(String courseName) {
this.courseName = courseName;
} public int getCourseRes() {
return courseRes;
} public void setCourseRes(int courseRes) {
this.courseRes = courseRes;
}}public class TestList { public static void main(String[] args) {
StuGra temp1 = new StuGra();
temp1.setStuName("你");
temp1.setCourseName("语文");
temp1.setCourseRes(99);
StuGra temp2 = new StuGra();
temp2.setStuName("你");
temp2.setCourseName("数学");
temp2.setCourseRes(86);
StuGra temp3 = new StuGra();
temp3.setStuName("我");
temp3.setCourseName("语文");
temp3.setCourseRes(100);
StuGra temp4 = new StuGra();
temp4.setStuName("他");
temp4.setCourseName("数据结构");
temp4.setCourseRes(50);
StuGra temp5 = new StuGra();
temp1.setStuName("你");
temp1.setCourseName("java");
temp1.setCourseRes(56);
List<StuGra> list = new ArrayList<StuGra>();
list.add(temp1);
list.add(temp2);
list.add(temp3);
list.add(temp4);
Map<String, Integer> map = new HashMap<String, Integer>();
Map<String, Integer> map2 = new HashMap<String, Integer>();
for (StuGra sg : list) {
StuGra s = sg;
map2.put(s.getStuName(), 1);
if (map.containsKey(s.getStuName())) {
int i = map.get(s.getStuName()).intValue();
int j = map2.get(s.getStuName());
j += 1;
i += s.getCourseRes();
map.put(s.getStuName(), i);
map2.put(s.getStuName(), j);
} else {
map.put(s.getStuName(), s.getCourseRes());
}
}
Set s = map.keySet();
for (Object i : s) {
double j = map.get(i) / map2.get(i);
System.out.println(i.toString() + "的平均分是:" + j);
System.out.println(i.toString() + "的总分是:" + map.get(i));
}
}}
结果:
他的平均分是:50.0
他的总分是:50
我的平均分是:100.0
我的总分是:100
你的平均分是:71.0
你的总分是:142
自己按格式排好就行了。。
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;class StuGra {
String stuName;// 学生名字
String courseName;// 课程名称
int courseRes;// 该课程的成绩 public String getStuName() {
return stuName;
} public void setStuName(String stuName) {
this.stuName = stuName;
} public String getCourseName() {
return courseName;
} public void setCourseName(String courseName) {
this.courseName = courseName;
} public int getCourseRes() {
return courseRes;
} public void setCourseRes(int courseRes) {
this.courseRes = courseRes;
}}public class test { public static void main(String[] args) {
StuGra temp1 = new StuGra();
temp1.setStuName("你");
temp1.setCourseName("语文");
temp1.setCourseRes(99);
StuGra temp2 = new StuGra();
temp2.setStuName("你");
temp2.setCourseName("数学");
temp2.setCourseRes(86);
StuGra temp3 = new StuGra();
temp3.setStuName("我");
temp3.setCourseName("语文");
temp3.setCourseRes(100);
StuGra temp4 = new StuGra();
temp4.setStuName("他");
temp4.setCourseName("数据结构");
temp4.setCourseRes(50);
StuGra temp5 = new StuGra();
temp5.setStuName("你");
temp5.setCourseName("java");
temp5.setCourseRes(56);
List<StuGra> list = new ArrayList<StuGra>();
list.add(temp1);
list.add(temp2);
list.add(temp3);
list.add(temp4);
list.add(temp5);
Collections.sort(list, new CompareStu());
int cur = 0;
String name = list.get(cur).getStuName();
int ts = 0;
int sc = 0;
for(int i =0;i<list.size();i++)
{
StuGra stu = list.get(i);
if(name.equals(stu.getStuName()))
{
sc++;
ts += stu.getCourseRes();
}else{
System.out.println(name + " " + ts+" "+(ts/(float)sc));
sc = 0;
ts = 0;
name = stu.getStuName();
i--;
}
}
System.out.println(name + " " + ts+" "+(ts/(float)sc)); }}class CompareStu implements Comparator {public int compare(Object sourceObj, Object targetObj) {
StuGra source = (StuGra) sourceObj;
StuGra target = (StuGra) targetObj;
int n = 0;
String sn = source.getStuName();
String tn = target.getStuName();
if(sn.compareTo(tn)<0)//sn tn
n = -1;
else if(sn.compareTo(tn)>0)
n = 1;
else
n = 0;
return n;
}}