打印输出的平均分是NaN

打印输出的平均分是NaN

接我的上一个问题,我按照老师的方法修改后,为什么打印输出的平均分是NaN呢?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,1、请检查一下在平均值的求值中是否出现了除数为0的情况,如果为0就会出现NaN!

2、如果还是有问题,请把所有代码贴出来,或者直接提交作业,在作业中对问题说明一下

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 必思答 提问者 #1
    在banji类中写了求平均分的方法: public Float avgChinese() { float sum = 0; float average = 0; for (int i = 0; i < stuList.size(); i++) { sum = sum + stuList.get(i).getChinese(); } try { average = sum / stuList.size(); } catch (java.lang.ArithmeticException e) { System.out.println("班級学生数为空,无法计算语文平均分!"); } return average; } 在school类中,创建Map<String,Float> avgChMap=new HashMap<String,Float>(); 在将班级添加到学校的方法中,同时将班级平均分添加到了avgChMap中: avgChMap.put(banji.getClassID(), banji.avgChinese()); 最后排序的方法:public void sortChineseByAverage() { // 从HashMap中恢复entry集合,得到全部键值对集合 Set<Map.Entry<String, Float>> entey = avgChMap.entrySet(); // 将Set集合转为List集合,为了使用工具类的排序方法 List<Map.Entry<String, Float>> list = new ArrayList<Map.Entry<String, Float>>(entey); // 使用Collections工具类对List进行排序 Collections.sort(list, new Comparator<Map.Entry<String, Float>>() { public int compare(Entry<String, Float> o1, Entry<String, Float> o2) { // 按照语文平均分从大到小排列 return o2.getValue().compareTo(o1.getValue()); } }); int i = 1; for (Entry<String, Float> lists : list) { System.out.println("No." + i + " " +lists.getKey()+" "+lists.getValue()); i++; } } 按理说除数为零的异常情况我已经处理了呀,
    2019-05-21 16:36:27
  • 必思答 提问者 #2
    好吧,回复里面不能贴代码吗?格式好像有点乱
    2019-05-21 16:37:54
  • 必思答 提问者 #3
    已提交作业,请老师看一下
    2019-05-21 20:32:36
好帮手慕小班 2019-05-21 19:48:00

同学你好,1、这里只有这一个方法 avgChinese,看不出是否为0,建议同学贴出全部代码注意不要贴在回复里,贴在回答中,否则会时区代码格式!

2、如果同学只有这一个问题的话,建议提交作业,我们会在作业中,找到问题,并提供修改建议!

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师