老师帮忙看看哪出问题了
/**
* 对各班语文成绩按平均分进行由大到小排序
*/
public void sortChineseByAverage() {
List<Float> a=new ArrayList<>();
Map<Float,BnJi> pj=new HashMap<>();
BnJi banji=null;
List<Student> stu=null;
Set<String> nameSet=this.getSchoolMap().keySet();
Set<Map.Entry<String,BnJi>> sc=this.getSchoolMap().entrySet();
if(nameSet==null)
{
System.out.println("还未添加班级");
}else {
for(Map.Entry<String,BnJi> jj:sc) {
float sum=0;
banji=jj.getValue();
stu=banji.getStuList();
if(stu!=null) {
for(Student ch:stu) {
sum+=ch.getChinese();
}
pj.put((sum/stu.size()),banji);
}else {
System.out.println("还未向"+banji.getClassName()+"中添加学生");
}
}
Set<Map.Entry<Float,BnJi>> sc1=pj.entrySet();
for(Map.Entry<Float,BnJi> xx:sc1) {
a.add(xx.getKey());
}
//排序
Collections.sort(a,new Comparator<Float>() {
@Override
public int compare(Float o1, Float o2) {
// TODO Auto-generated method stub
return (int) (o2-o1);
}
});
for(Float aa:a) {
System.out.println(pj.get(aa).getClassName()+":"+aa);
}
}
}
请输入对应数字进行学校列表管理
4
对各班语文成绩按平均分进行由大到小排序
bb:NaN
正在回答
同学你好,是的,不输出else语句的原因是因为同学这里通过getStuList()方法获取了stu的集合,同学在班级类中应该是对stuList进行类实例化,具体如下:

所以不能通过是否为null进行判断这个stu集合中是否有学生,应该通过size()方法,判断集合中是否有学生,具体如下:

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星