老师,我的对成绩取平均分不正确,请指导一下,按我的程序
package com.imooc.zuoye4; import java.util.InputMismatchException; import java.util.List; import java.util.Map; import java.util.Scanner; import java.util.Set; /** * TestDemo类 * * 方法: * * 班级的测试方法:public void testBanJi(){} * * 学校的测试方法:public void testSchool(){} * * 主菜单: public void mainMenu(){} * * 学校管理菜单:public void schoolMenu(){} * * 班级管理菜单:public void banJiMenu(){} * * 主流程:public void test(){} * * * @author 14628 * */ public class TestDemo { public void testStudent() { // Student类测试 Student student0 = new Student("s001", "妮妮"); Student student1 = new Student("s002", "天天"); Student student2 = new Student("s003", "阳阳"); Student student3 = new Student("s003", "阳阳"); System.out.println(student0); System.out.println(student1); System.out.println(student2); // 测试0和2这两个对象是否相等 System.out.println("student0==student2?" + student0.equals(student2)); // 测试2和3这两个对象是否相等 System.out.println("student2==student3?" + student2.equals(student3)); } public void testBanJi() { // 定义几个Student类对象,添加到班级中 Student student0 = new Student("s001", "妮妮"); Student student1 = new Student("s002", "天天"); Student student2 = new Student("s003", "阳阳"); // 创建一个Banji对象 Banji mainXueSheng = new Banji("主学生列表"); mainXueSheng.addStudent(student0); mainXueSheng.addStudent(student1); mainXueSheng.addStudent(student2); // 显示学生信息 mainXueSheng.displayAllStudent(); // 通过学号查询学生信息 Student student = mainXueSheng.searchStudentByNum("s001"); if (student != null) { System.out.println("通过学号查询的学生信息为:"); System.out.println(student); } else { System.out.println("该学生不存在!"); } // 输入学生的语文成绩 mainXueSheng.insertChineseScore("s001", 88); mainXueSheng.insertChineseScore("s002", 98); mainXueSheng.insertChineseScore("s003", 78); // 输出学生的语文成绩 System.out.println("学生的语文成绩为:"); List<Student> stuList = mainXueSheng.getStuList(); for (Student stu : stuList) { System.out.println("学号:" + stu.getStuNum() + ",姓名:" + stu.getStuName() + ",语文成绩:" + stu.getChinese()); } // 输入学生的数学成绩 mainXueSheng.insertMathScore("s001", 77); mainXueSheng.insertMathScore("s002", 88); mainXueSheng.insertMathScore("s003", 99); // 输出学生的数学成绩 System.out.println("学生的数学成绩为:"); for (Student stu : stuList) { System.out.println("学号:" + stu.getStuNum() + ",姓名:" + stu.getStuName() + ",数学成绩:" + stu.getMath()); } // 显示所有学生信息 System.out.println("所有学生的信息:"); mainXueSheng.displayAllStudent(); System.out.println("11133" + mainXueSheng.getAverageChinese()); // Scanner sc=new Scanner(System.in); // System.out.println("请输入xuehao:"); // String stuNum1 = sc.next(); // System.out.println("请输入一个语文成绩:"); // float yuwen = sc.nextFloat(); // System.out.println(yuwen); // zhuXueSheng.insertChineseScore(stuNum1,yuwen ); // zhuXueSheng.displayAllStudent(); // // 删除学生信息 System.out.println("删除前:"); mainXueSheng.displayAllStudent(); System.out.println("删除后:"); mainXueSheng.deleteStudent("s001"); mainXueSheng.displayAllStudent(); } // 测试School类的方法 public void testSchool() { Student student1 = new Student("s001", "nini"); Student student2 = new Student("s002", "hini"); Student student3 = new Student("s003", "gini"); Student student4 = new Student("s004", "bini"); Student student5 = new Student("s005", "gini"); Student student6 = new Student("s006", "fini"); Student student7 = new Student("s007", "eini"); Student student8 = new Student("s008", "wini"); Student student9 = new Student("s009", "sini"); Banji banji = new Banji("yiban"); Banji banji2 = new Banji("erban"); Banji banji3 = new Banji("sanban"); banji.addStudent(student1); banji.addStudent(student2); banji.addStudent(student3); banji2.addStudent(student4); banji2.addStudent(student5); banji2.addStudent(student6); banji3.addStudent(student7); banji3.addStudent(student8); banji3.addStudent(student9); banji.insertChineseScore("s001", 88); banji.insertChineseScore("s002", 98); banji.insertChineseScore("s003", 78); banji2.insertChineseScore("s004", 77); banji2.insertChineseScore("s005", 78); banji2.insertChineseScore("s006", 70); banji3.insertChineseScore("s007", 74); banji3.insertChineseScore("s008", 76); banji3.insertChineseScore("s009", 72); banji.insertMathScore("s001", 89); banji.insertMathScore("s002", 100); banji.insertMathScore("s003", 99); banji2.insertMathScore("s004", 45); banji2.insertMathScore("s005", 78); banji2.insertMathScore("s006", 87); banji3.insertMathScore("s007", 46); banji3.insertMathScore("s008", 67); banji3.insertMathScore("s009", 87); School school = new School(); school.addBanji(banji); school.addBanji(banji2); school.addBanji(banji3); System.out.println("各班的语文成绩平均值:"); school.sortChineseByAverage(); System.out.println("各班的数学成绩平均值:"); school.sortMathByAverage(); } // 主菜单 public void mainMenu() { System.out.println("************************************"); System.out.println(" **主菜单** "); System.out.println(" 1-班级管理 "); System.out.println(" 2-学校管理 "); System.out.println(" 0-退出 "); System.out.println("************************************"); } // 学校菜单 public void schoolMenu() { System.out.println("***********************************************************"); System.out.println(" **学校管理** "); System.out.println(" 1-创建班级"); System.out.println(" 2-删除班级"); System.out.println(" 3-通过班级名称查询班级信息"); System.out.println(" 4-对各班语文成绩按平均分进行由大到小排序"); System.out.println(" 5-对各班数学成绩按平均分进行由大到小排序"); System.out.println(" 6-显示所有班级名称"); System.out.println(" 9-返回上一级菜单"); System.out.println("***********************************************************"); } // 班级菜单 public void classMenu() { System.out.println("***********************************************************"); System.out.println(" **班级管理** "); System.out.println(" 1- 添加学生信息到主学生列表"); System.out.println(" 2-添加学生信息到普通班级"); System.out.println(" 3-通过学号查询学生信息"); System.out.println(" 4- 输入班级的语文成绩"); System.out.println(" 5- 输入班级的数学成绩"); System.out.println(" 6- 删除学生信息"); System.out.println(" 7-显示所有学生信息"); System.out.println(" 9-返回上一级菜单"); System.out.println("***********************************************************"); } // 测试 public void test() { TestDemo td = new TestDemo(); Scanner sc = new Scanner(System.in); int input1 = 0, input2 = 0, input3 = 0; // 创建一个学校 School school = new School(); // 创建一个班级主学生列表 Banji mainBanJi = new Banji("主学生列表"); // 把学生添加到班级中 school.addBanji(mainBanJi); Banji banJi1=null; while (true) { td.mainMenu(); System.out.println("请输入对应数字进行操作!"); try { input1 = sc.nextInt(); } catch (InputMismatchException e) { System.out.println("输入的格式有误,请从新输入"); sc.next(); } if (input1 == 0) { break; } switch (input1) { case 1: // 班级操作,班级管理 while (true) { td.classMenu(); System.out.println("请输入对应数字操作!"); try { input2 = sc.nextInt(); } catch (InputMismatchException e) { System.out.println("输入的格式有误,请从新输入"); sc.next(); } if (input2 == 9) { break; } switch (input2) { case 1: System.out.println("添加学生信息到主学生列表"); System.out.println("请输入要添加学生的数量:"); int cuont=0; try { cuont = sc.nextInt(); } catch (InputMismatchException e) { System.out.println("输入的格式有误,请从新输入"); sc.next(); continue; } for(int i=1;i<=cuont;i++) { System.out.println("请输入添加学生的信息"); System.out.println("请输入添加第"+i+"个学生的学号"); String strStuNum=sc.next(); System.out.println("请输入要添加第"+i+"个学生的姓名:"); String strStuName=sc.next(); //创建学生对象 Student student=new Student(strStuNum,strStuName); //把学生添加到主学生列表中 mainBanJi.addStudent(student); } mainBanJi.displayAllStudent(); break; case 2: System.out.println("添加学生信息到普通班级"); System.out.println("请输入要添加的班级名称:"); String sName=sc.next(); //根据名称判断班级是否在学生中存在 banJi1=school.searchByName(sName); if(banJi1==null) { System.out.println("该班级不存在,请先将班级添加到学校中"); }else{ System.out.println("请输入要添加的学生数量:"); int count1=0; try { count1 = sc.nextInt(); } catch (InputMismatchException e) { System.out.println("输入的格式有误,请从新输入"); sc.next(); } for(int i=1;i<=count1;i++) { System.out.println("请输入第"+i+"个学生"); System.out.println("请输入学生学号:"); String strStuNum=sc.next(); //首先判断该学号的学生是否在主学生列表存在 Student student=mainBanJi.searchStudentByNum(strStuNum); if(student==null) { System.out.println("该学生不存在主学生列表中,请输入学生姓名:"); String strStuName=sc.next(); //创建学生类对象 student=new Student(strStuNum,strStuName); //把学生添加到普通列表 banJi1.addStudent(student); //然后再把学生添加到主学生列表 mainBanJi.addStudent(student); }else { //如果不为空,直接将学生添加到现在的列表中 banJi1.addStudent(student); } } //显示学生列表中的学生信息 System.out.println("主学生列表:"); mainBanJi.displayAllStudent(); System.out.println("添加到学生列表"); banJi1.displayAllStudent(); } break; case 3: System.out.println("通过学号查询学生信息"); System.out.println("请输入要查询的班级名称"); String strClassName=sc.next(); //把查询到的班级赋给banJi2 Banji banJi2=school.searchByName(strClassName); if(banJi2==null) { System.out.println("输入的班级不存在!");break; }else { System.out.println("请输入要查询学生信息的学号:"); String strStuNum=sc.next(); //查询班级里是否存在该学生 Student s=banJi2.searchStudentByNum(strStuNum); if(s==null) { System.out.println("该学生学生列表不存在!"); }else { System.out.println("查询的学生信息为:"); System.out.println(s); } } break; case 4: System.out.println("输入班级的语文成绩"); List<Student> stuList=mainBanJi.getStuList(); for(Student stu:stuList) { System.out.println("请输入语文成绩学生的学号:"); String strStuNum=sc.next(); System.out.println("输入学号为"+strStuNum+"的语文成绩:"); float flChinese=sc.nextFloat(); System.out.println("学号:"+stu.getStuNum()+",姓名:"+stu.getStuName()+",语文成绩:"+flChinese); } //显示所有的学生信息 mainBanJi.displayAllStudent(); break; case 5: System.out.println("输入班级的数学成绩"); int count=0; System.out.println("请输入添加的学生个数"); count=sc.nextInt(); for(int i=1;i<=count;i++) { System.out.println("请输入学生学号:"); String strStuNum=sc.next(); System.out.println("请输入学号为"+strStuNum+"的数学成绩:"); float fl=sc.nextFloat(); mainBanJi.insertMathScore(strStuNum, fl); } mainBanJi.displayAllStudent(); // List<Student> stuList2=mainBanJi.getStuList(); // for(Student stu:stuList2) { // System.out.println("请输入数学成绩学生的学号:"); // String strStuNum=sc.next(); // System.out.println("请输入学号为"+strStuNum+"的数学成绩:"); // float flMath=sc.nextFloat(); // System.out.println("学号:"+stu.getStuNum()+",姓名:"+stu.getStuName()+",数学成绩:"+flMath); // } break; case 6: System.out.println("删除学生信息"); System.out.println("输入要查询的班级:"); String strBanJi6=sc.next(); //查询班级是否存在 Banji bj6=school.searchByName(strBanJi6); if(bj6==null) { System.out.println("没有该班级!");break; }else { System.out.println("请输入要删除的学生名称:"); String strName=sc.next(); bj6.deleteStudent(strName); } break; case 7: System.out.println("显示所有学生信息"); mainBanJi.displayAllStudent(); break; default: System.out.println("没有对应的数字操作!"); break; } } case 2: // 学校操作,学校管理 while (true) { td.schoolMenu(); System.out.println("请输入对应的数字操作!"); try { input3 = sc.nextInt(); } catch (InputMismatchException e) { System.out.println("输入的格式有误,请从新输入"); sc.next(); } if (input3 == 9) { break; } switch (input3) { case 1: System.out.println("创建班级"); System.out.println("请输入要添加的班级名称:"); String banJiName=sc.next(); //创建一个新的班级对象 banJi1=new Banji(banJiName); //将班级添加到学校中 school.addBanji(banJi1); break; case 2: System.out.println("删除班级"); System.out.println("请输入要删除的班级:"); String strName=sc.next(); if(strName.equals("主学生列表")) { System.out.println("主学生列表不能删除!"); } //查询班级是否存在 Banji banji2=school.searchByName(strName); if(banji2==null) { System.out.println("该班级不存在!"); }else { school.deleteBanji(banji2); } break; case 3: System.out.println("通过班级名称查询班级信息"); System.out.println("请输入要查询的班级名称:"); String strName3=sc.next(); Banji bj=school.searchByName(strName3); if(bj==null) { System.out.println("该班级不存在!"); }else { System.out.println("该班级存在"); System.out.println("该班级名称为:"+strName3); System.out.println("学校所有班级:"); school.displayBanJiName(); } break; case 4: System.out.println("对各班语文成绩按平均分进行由大到小排序"); school.sortChineseByAverage(); break; case 5: System.out.println("对各班数学成绩按平均分进行由大到小排序"); school.sortMathByAverage(); break; case 6: System.out.println("显示所有班级名称"); school.displayBanJiName(); break; default: System.out.println("没有对应的数字操作!"); break; } } } } } public static void main(String[] args) { // TODO Auto-generated method stub TestDemo td = new TestDemo(); // td.testStudent(); // td.testBanJi(); // td.testSchool(); td.test(); } }
package com.imooc.zuoye4; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; /*** * 属性:存放班级的集合(schoolMap) ,类型为Map 方法: 构造方法 getter和setter方法 添加班级:public void addBanji(Banji banji){} 删除班级 : public void deleteBanji(Banji banji){} 通过班级名称查询班级:public BanJi searchByName(String className) {} 对各班语文成绩按平均分进行由大到小排序:public void sortChineseByAverage() {} 对各班数学成绩按平均分进行由大到小排序:public void sortMathByAverage() {} 显示所有班级名称:public void displayBanJiName() {} * @author 14628 * */ public class School { //存放班级的集合 Map<String,Banji> schoolMap; public School() { schoolMap=new HashMap<String,Banji>(); } public Map<String, Banji> getSchoolMap() { return schoolMap; } public void setSchoolMap(Map<String, Banji> schoolMap) { this.schoolMap = schoolMap; } /** * 添加班级 * @param banji 要添加的班级 */ public void addBanji(Banji banji){ //将班级名称作为KEY值 schoolMap.put(banji.getClassName(), banji); } /** * 删除班级 * @param banji 要删除的班级 */ public void deleteBanji(Banji banji){ schoolMap.remove(banji.getClassName()); System.out.println("删除成功!"); } /** * 通过班级名称查询班级 * @param className 班级名 * @return */ public Banji searchByName(String className) { Banji banJi=null; Set<String> banJiSet=schoolMap.keySet(); for(String s:banJiSet) { if(s.equals(className)) { banJi=schoolMap.get(s);break; } } return banJi; } /** * 对各班语文成绩按平均分进行由大到小排序 */ public void sortChineseByAverage() { List<HashMap.Entry<String,Banji>> list=new ArrayList(); for(Map.Entry<String,Banji> entry:schoolMap.entrySet()) { list.add(entry); //System.out.println(entry.getKey()+"语文平均成绩为:"+entry.getValue().getAverageChinese()); } Collections.sort(list,new Comparator<HashMap.Entry<String,Banji>>() { public int compare(HashMap.Entry<String,Banji> o1,HashMap.Entry<String,Banji> o2) { return (int)o2.getValue().getAverageChinese()-(int)o1.getValue().getAverageChinese(); } }); for(HashMap.Entry<String,Banji> sss:list) { System.out.println(sss.getKey()); System.out.println(sss.getValue().getAverageChinese()); } // Collections.sort(list, new Comparator<HashMap.Entry<String, Integer>>() { // public int compare(HashMap.Entry<String, Integer> o1, HashMap.Entry<String, Integer> o2) { // return o2.getValue() - o1.getValue(); //这里是从大到小进行排序,如果需从小到大进行排序则将o1和o2互换即可 // } // }); } /** * 对各班数学成绩按平均分进行由大到小排序 */ public void sortMathByAverage() { List<HashMap.Entry<String,Banji>> list2=new ArrayList(); for(Map.Entry<String,Banji> entry:schoolMap.entrySet()) { list2.add(entry); } Collections.sort(list2,new Comparator<HashMap.Entry<String,Banji>>(){ public int compare(HashMap.Entry<String,Banji> o1,HashMap.Entry<String,Banji> o2) { return (int)o2.getValue().getAverageMath()-(int)o1.getValue().getAverageMath(); } }); for(HashMap.Entry<String,Banji> entry:list2) { System.out.println(entry.getKey()+"\n"+entry.getValue().getAverageMath()); } } /** * 显示所有班级名称 */ public void displayBanJiName() { //取出key值 Set<String> schoolSet=schoolMap.keySet(); System.out.println("所有班级信息为:"); for(String s:schoolSet) { if(s.equals("主学生列表"))continue; System.out.println(s); } } }
package com.imooc.zuoye4; /** * * 属性: 学号(stuNum)、姓名(stuName) 这两个属性为String类型 数学成绩(math)、语文成绩(chinese) 这两个属性为float类型 方法: 构造方法 setter和getter方法 hashCode()和equals()方法 toString()方法 * @author 14628 * */ public class Student { private String stuNum; private String stuName; private float math; private float chinese; public Student() { } public Student(String stuNum, String stuName) { super(); this.stuNum = stuNum; this.stuName = stuName; } public String getStuNum() { return stuNum; } public void setStuNum(String stuNum) { this.stuNum = stuNum; } public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public float getMath() { return math; } public void setMath(float math) { this.math = math; } public float getChinese() { return chinese; } public void setChinese(float chinese) { this.chinese = chinese; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + Float.floatToIntBits(chinese); result = prime * result + Float.floatToIntBits(math); result = prime * result + ((stuName == null) ? 0 : stuName.hashCode()); result = prime * result + ((stuNum == null) ? 0 : stuNum.hashCode()); return result; } @Override public boolean equals(Object obj) { //判断对象是否相等,如果相等则返回true,就不用继续比较属性了 if(this==obj) { return true; } //判断obj是否是Student类的对象 if(obj.getClass()==Student.class) { Student student=(Student)obj; return student.getStuNum().equals(stuNum)&&student.getStuName().equals(stuName)&& student.getMath()==this.math&&student.getChinese()==this.chinese; } return false; } @Override public String toString() { return "学生信息为:学号:" + stuNum + ",姓名:" + stuName ; } }
package com.imooc.zuoye4; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * Banji类: 属性:班级编号(classId)、班级名称(className) 这两个属性均为String类型 存放学生的集合(stuList) 这个属性为List类型 方法:构造方法 getter和setter方法 将学生添加到班级:public void addStudent(Student stu){} 通过学号查询学生在班级中是否存在: public Student searchStudentByNum(String stuNum){} 输入班级学生的语文成绩:public void insertChineseScore(String stuNum,float score){} 输入班级学生的数学成绩:public void insertMathScore(String stuNum,float score){} 删除学习信息:public void deleteStudent(String stuNum){} 显示所有学生的信息(包括学号和姓名):public void displayAllStudent(){} * @author 14628 * */ public class Banji { private String classId; private String className; private List<Student> stuList; public Banji( String className) { super(); this.className = className; stuList=new ArrayList<Student>(); } public String getClassId() { return classId; } public void setClassId(String classId) { this.classId = classId; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public List<Student> getStuList() { return stuList; } public void setStuList(List<Student> stuList) { this.stuList = stuList; } /** * 将学生添加到班级 * @param stu 添加的学生 */ public void addStudent(Student stu){ //要排除重复添加的情况 boolean flag=false;//判断班级中的学生是否存在 for(Student student:stuList) { if(student.equals(stu)) { System.out.println("该学生"); flag=true; } } if(flag) { System.out.println("该学生已经在此班级中存在!添加失败"); } else { stuList.add(stu); } } /** * 通过学号查询学生在班级中是否存在 * @param stuNum 要查询的学生学号 * @return */ public Student searchStudentByNum(String stuNum){ Student student=null; //学号是唯一的 for(Student student1:stuList) { if(student1.getStuNum().equals(stuNum)) { student=student1; break; } } return student; } /** * 输入班级学生的语文成绩 * @param stuNum 学生学号 * @param score 学生的语文成绩 */ public void insertChineseScore(String stuNum,float score){ //通过学号查询学生信息 Student student1=searchStudentByNum(stuNum); if(student1!=null) { //该学生不为空时,表示学生存在 System.out.println("添加学号为:"+stuNum+"的语文成绩为:"+score); student1.setChinese(score); }else { System.out.println("没有该学生信息!"); } } /** * 输入班级学生的数学成绩 * @param stuNum 学生学号 * @param score 学生的数学成绩 */ public void insertMathScore(String stuNum,float score){ Scanner sc=new Scanner(System.in); //通过学号查询学生信息 Student student2=searchStudentByNum(stuNum); if(student2!=null) { //该学生不为空时,输入数学成绩 System.out.println("添加学号为:"+stuNum+"的数学成绩为:"+score); student2.setMath(score); }else { System.out.println("该学生信息不存在!"); } } /** * 删除学习信息 * @param stuNum 学生学号 */ public void deleteStudent(String stuNum){ Student student=searchStudentByNum(stuNum); if(student!=null) { stuList.remove(student); }else { System.out.println("没有找到学号为"+stuNum+"的学生信息!"); } } /** * 取该班的语文平均分 */ public float getAverageChinese() { int zongR=0; float zongF=0; for(Student s:stuList) { float a=s.getChinese(); zongF+=a; } return zongF/stuList.size(); } /** * 取该班的数学平均分 */ public float getAverageMath() { float zongF=0; int zongR=0; for(Student s:stuList) { float a=s.getMath(); zongF+=a; } return zongF/stuList.size(); } /** * 显示所有学生的信息(包括学号和姓名) */ public void displayAllStudent(){ System.out.println("该班级所有学生信息:"); for(Student stu:stuList) { System.out.println(stu); } } }
33
收起
正在回答 回答被采纳积分+1
2回答
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星