程序编译不报错,运行不报错,就是不执行某个地方
这是测试类 public class TestDemo { Scanner stdIn=new Scanner(System.in); School school=new School(); //方法一:主菜单 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 banjiMenu(){ 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 schoolMenu(){ 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 testBanji(){ TestDemo td=new TestDemo(); Banji banji=new Banji("b001","主学生列表"); //主学生列表作为一个特殊的班级存在 school.addBanji(banji); Outer: while(true){ td.banjiMenu(); System.out.println("请输入对应的数字对班级进行管理:"); Inner: while(true){ int w=stdIn.nextInt(); if(w==9){ td.test(); break Outer; } switch(w){ case 1:System.out.println("添加学生信息到主学生列表"); System.out.println("请输入要添加的学生的数量:"); int e=stdIn.nextInt(); for(int i=1;i<=e;i++){ System.out.println("请输入第"+i+"个学生信息:"); System.out.println("请输入学号:"); String id=stdIn.next(); System.out.println("请输入学生姓名:"); String name=stdIn.next(); Student stu=new Student(id,name); banji.addStudent(stu); } System.out.println("主学生列表的学生信息如下:"); banji.displayAllStudent(); break Inner; case 2:System.out.println("添加学生信息到普通班级"); System.out.println("请输入要将学生添加到的班级名称:"); String banjiName=stdIn.next(); Banji banji2=school.searchByName(banjiName); if(banji2==null){ System.out.println("亲,该班级不存在哟,赶快去添加吧。");break Inner; }else{ System.out.println("请输入要添加的学生的数量:"); int y=stdIn.nextInt(); for(int i=1;i<=y;i++){ System.out.println("请输入第"+i+"个学生信息:"); System.out.println("请输入学号:"); String id=stdIn.next(); //通过学生ID查询主学生列表中是否存在该ID的学生 Student stu2=banji.searchStudentByNum(id); if(stu2==null){ System.out.println("该学生在主学生列表中不存在,请继续添加学生的其他信息:"); System.out.println("请输入学生姓名:"); String name=stdIn.next(); Student stu21=new Student(id,name); banji.addStudent(stu21); banji2.addStudent(stu21); System.out.println("添加完成。"); }else{ banji2.addStudent(stu2); System.out.println("添加完成。"); } } } break Inner; case 3:System.out.println("通过学号查询学生信息"); break Inner; case 4:System.out.println("输入班级的语文成绩"); break Inner; case 5:System.out.println("输入班级的数学成绩"); break Inner; case 6:System.out.println("删除学生信息"); break Inner; case 7:System.out.println("显示所有学生信息"); break Inner; default:System.out.println("您的输入超出范围,请重新输入:"); continue Inner; } } } } //方法五:学校的测试方法 public void testSchool(){ TestDemo td=new TestDemo(); int t=0; Outer: while(true){ td.schoolMenu(); System.out.println("请输入对应的数字对学校进行管理:"); Inner: while(true){ t=stdIn.nextInt(); if(t==9){ td.test(); break Outer; } switch(t){ case 1:System.out.println("创建班级"); System.out.println("请输入要创建的班级id:"); String banjiId=stdIn.next(); System.out.println("请输入要创建的班级名称:"); String banjiName=stdIn.next(); Banji banji1=new Banji(banjiId,banjiName); school.addBanji(banji1); break Inner; case 2:System.out.println("删除班级"); break Inner; case 3:System.out.println("通过班级名称查询班级信息"); break Inner; case 4:System.out.println("对各班语文成绩按平均分进行由大到小排序"); break Inner; case 5:System.out.println("对各班数学成绩按平均分进行由大到小排序"); break Inner; case 6:System.out.println("显示所有班级名称"); school.displayBanjiName(); break Inner; default:System.out.println("您的输入超出范围,请重新输入:"); continue Inner; } } } } //方法六:主流程 public void test(){ TestDemo td=new TestDemo(); int q=0; Outer: while(true){ td.mainMenu(); System.out.println("请输入对应数字进行操作:"); Inner: while(true){ q=stdIn.nextInt(); if(q==0){ break Outer; } switch(q){ case 1:td.testBanji();break Outer; case 2:td.testSchool();break Outer; default:System.out.println("您的输入超出范围,请重新输入:");continue Inner; } } } } public static void main(String[] args) { // TODO Auto-generated method stub TestDemo td=new TestDemo(); td.test(); } } 这是学校类 public class School { private Map<String,Banji> schoolMap; //存放班级的集合 班级名称作为key值,班级信息作为value值 //构造方法 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; System.out.println("----1313"); Set<String> banjiSet=schoolMap.keySet(); for(String banji3:banjiSet){ System.out.println("----1414"); if(banji3.equals(className)){ System.out.println("----1515"); banji=schoolMap.get(banji3); break; } } return banji; } /** * 方法四:对各班语文成绩按平均分进行由大到小排序 */ public void sortChineseByAverage(){ //使用Map集合存放班级语文成绩平均分,班级名称作为key值,平均分作为value值 Map<String,Float> banjiMap=new HashMap<String,Float>(); Banji banji=null; Set<String> banjiName=schoolMap.keySet(); //获取班级名称的集合 for(String s:banjiName){ //使用增强型for循环遍历班级名称集合 banji=this.searchByName(s); //确认班级是否存在 if(banji==null){ System.out.println("该班级不存在。");break; }else{ float chinese1=0.0f; int m=0; //System.out.println(s+"的平均分:"); //某班 List<Student> ls=banji.getStuList(); //获取班级类中存放学生的集合 Iterator <Student> stu=ls.iterator(); //使用迭代器循环遍历学生 while(stu.hasNext()){ //使用while循环遍历学生的语文成绩 chinese1+=stu.next().getChinese(); m++; } chinese1=chinese1/m; banjiMap.put(s, chinese1); } } List<Map.Entry<String,Float>> lm=new ArrayList<Map.Entry<String,Float>>(banjiMap.entrySet()); Collections.sort(lm, new Comparator<Map.Entry<String,Float>>(){ //降序排序 public int compare(Entry<String,Float> o1,Entry<String,Float> o2){ return o2.getValue().compareTo(o1.getValue()); } }); for(Map.Entry<String, Float> mes:lm){ System.out.println(mes.getKey()+"的平均分:"+mes.getValue()); } } /** * 方法六:显示所有班级名称 */ public void displayBanjiName(){ Set<String> banjiName=schoolMap.keySet(); for(String s:banjiName){ System.out.println(s); } } } 班级类 public class Banji { //班级编号 班级名称 存放学生的集合 private String classId; private String className; private List<Student> stuList; //带参构造方法 public Banji(String classId,String className){ this.setClassId(classId); this.setClassName(className); stuList=new ArrayList<Student>(); } /*public Banji(String className){ this.setClassName(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; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((classId == null) ? 0 : classId.hashCode()); result = prime * result + ((className == null) ? 0 : className.hashCode()); result = prime * result + ((stuList == null) ? 0 : stuList.hashCode()); return result; } @Override public boolean equals(Object obj) { if(this==obj){ return true; } if(obj.getClass()==Banji.class){ Banji banji=(Banji)obj; return banji.getClassName().equals(className); } return false; } /** * 方法一:将学生添加到班级 * @param stu 要添加的学生 */ public void addStudent(Student stu){ boolean flag=false; for(Student stu1:stuList){ if(stu1.equals(stu)){ flag=true; break; } } if(flag){ System.out.println("该学生已经存在,请不要重复添加。"); }else{ stuList.add(stu); } } /** * 方法二:通过学号查询学生在班级中是否存在 * @param stuNum 要查询的学生的学号 * @return 学生的信息 */ public Student searchStudentByNum(String stuNum){ Student stu=null; for(Student stu2:stuList){ if(stu2.getId().equals(stuNum)){ //判断该学生是否存在 stu=stu2; break; } } return stu; } /** * 方法三:输入班级学生的语文成绩 * @param stuNum 要输入语文成绩的学生的学号 * @param score 要输入的语文成绩 */ public void insertChineseScore(String stuNum,float score){ for(Student stu3:stuList){ if(stu3.getId().equals(stuNum)){ stu3.setChinese(score); break; }else{ System.out.println("亲,没有该学生的信息哟。");break; } } } /** * 方法四:输入班级学生的数学成绩 * @param stuNum 要输入数学成绩的学生的学号 * @param score 要输入的数学成绩 */ public void insertMath(String stuNum,float score){ for(Student stu4:stuList){ if(stu4.getId().equals(stuNum)){ stu4.setMath(score); break; }else{ System.out.println("亲,没有该学生的信息哟。");break; } } } /** * 方法五:删除学生信息 * @param stuNum 要删除的学生的学号 */ public void deleteStudent(String stuNum){ for(Student stu5:stuList){ if(stu5.getId().equals(stuNum)){ stuList.remove(stu5); break; }else{ System.out.println("亲,没有该学生的信息哟。"); break; } } } /** * 方法六:显示所有学生的信息 */ public void displayAllStudent(){ for(Student stu6:stuList){ System.out.println(stu6); } } } 学生类 public class Student { // 属性:学号,姓名,数学成绩,语文成绩 private String id; private String name; private float math; private float chinese; // 无参构造方法 public Student() { } // 带参构造方法 public Student(String id, String name) { this.setId(id); this.setName(name); } public Student(float math,float chinese){ this.setMath(math); this.setChinese(chinese); } public Student(float chinese){ this.setMath(chinese); } // 封装 public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } 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; } // 重写HashCode方法 @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + Float.floatToIntBits(chinese); result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + Float.floatToIntBits(math); result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } // 重写equals方法 @Override public boolean equals(Object obj) { // 先判断对象是否相等,相等则返回true if (this == obj) { return true; } // 判断是否是同一个类 if (obj.getClass() == Student.class) { Student student = (Student) obj; // 强制类型转换 return student.getId().equals(id) & student.getName().equals(name); } return false; } //重写toString方法 @Override public String toString() { return "学生信息[学号:" + id + ", 姓名:" + name + "]"; } }
2
收起
正在回答
7回答
同学你好,这两个问题是由于普通班级与主学生列表的班级共用了一个对象,修改代码如下图所示:
建议同学作业不要在问答区问,直接上传作业,老师会有一个详细的批复文档,帮助同学更高效的解决问题。老师如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
士林健津_007
2019-04-02 18:14:29
测试类: public class TestDemo { Scanner stdIn=new Scanner(System.in); //方法一:主菜单 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 banjiMenu(){ 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 schoolMenu(){ 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 testBanji(Banji banji,Student student,School school){ TestDemo td=new TestDemo(); Outer: while(true){ td.banjiMenu(); System.out.println("请输入对应的数字对班级进行管理:"); Inner: while(true){ int w=stdIn.nextInt(); if(w==9){ td.test(banji,student,school,td); break Outer; } switch(w){ case 1:System.out.println("添加学生信息到主学生列表"); System.out.println("请输入要添加的学生的数量:"); int e=stdIn.nextInt(); for(int i=1;i<=e;i++){ System.out.println("请输入第"+i+"个学生信息:"); System.out.println("请输入学号:"); String id=stdIn.next(); System.out.println("请输入学生姓名:"); String name=stdIn.next(); Student stu=new Student(id,name); banji.addStudent(stu); } System.out.println("主学生列表的学生信息如下:"); banji.displayAllStudent(); break Inner; case 2:System.out.println("添加学生信息到普通班级"); System.out.println("从主学生列表获取学生分配班级"); System.out.println("请输入要将学生分配到的班级名称:"); String banjiName=stdIn.next(); Banji banji2=school.searchByName(banjiName); if(banji2==null){ System.out.println("亲,该班级不存在哟,赶快去添加吧。");break Inner; }else{ System.out.println("请输入要添加的学生的数量:"); int y=stdIn.nextInt(); for(int i=1;i<=y;i++){ System.out.println("请输入第"+i+"个学生信息:"); System.out.println("请输入学号:"); String id=stdIn.next(); //通过学生ID查询主学生列表中是否存在该ID的学生 Student stu2=banji.searchStudentByNum(id); if(stu2==null){ System.out.println("该学生在主学生列表中不存在,赶快去添加吧。");break Inner; }else{ banji2.addStudent(stu2); System.out.println("添加完成。"); } } } break Inner; case 3:System.out.println("通过学号查询学生信息"); System.out.println("请输入要查询的学生所在的班级名称:"); String str3=stdIn.next(); Banji banji3=school.searchByName(str3); if(banji3==null){ System.out.println("亲,该班级不存在哟。");break Inner; }else{ System.out.println("请输入要查询的学生的学号:"); String str31=stdIn.next(); Student stu3=banji3.searchStudentByNum(str31); if(stu3==null){ System.out.println("亲,该学生不存在哟。");break Inner; }else{ banji3.deleteStudent(str31); } } break Inner; case 4:System.out.println("输入班级的语文成绩"); break Inner; case 5:System.out.println("输入班级的数学成绩"); break Inner; case 6:System.out.println("删除学生信息"); break Inner; case 7:System.out.println("显示所有学生信息"); break Inner; default:System.out.println("您的输入超出范围,请重新输入:"); continue Inner; } } } } //方法五:学校的测试方法 public void testSchool(Banji banji,Student student,School school){ TestDemo td=new TestDemo(); int t=0; Outer: while(true){ td.schoolMenu(); System.out.println("请输入对应的数字对学校进行管理:"); Inner: while(true){ t=stdIn.nextInt(); if(t==9){ td.test(banji,student,school,td); break Outer; } switch(t){ case 1:System.out.println("创建班级"); System.out.println("请输入要创建的班级id:"); String banjiId=stdIn.next(); System.out.println("请输入要创建的班级名称:"); String banjiName=stdIn.next(); banji=new Banji(banjiId,banjiName); school.addBanji(banji); break Inner; case 2:System.out.println("删除班级"); System.out.println("请输入要删除的班级名称:"); String str2=stdIn.next(); if(str2.equals("主学生列表")){ System.out.println("主学生列表不能删除哟。");break; }else{ Banji banji2=school.searchByName(str2); if(banji2==null){ System.out.println("亲,该班级不存在哟。"); }else{ school.deleteBanji(banji2); } } break Inner; case 3:System.out.println("通过班级名称查询班级信息"); break Inner; case 4:System.out.println("对各班语文成绩按平均分进行由大到小排序"); break Inner; case 5:System.out.println("对各班数学成绩按平均分进行由大到小排序"); break Inner; case 6:System.out.println("显示所有班级名称"); school.displayBanjiName(); break Inner; default:System.out.println("您的输入超出范围,请重新输入:"); continue Inner; } } } } //方法六:主流程 public void test(Banji banji,Student student,School school,TestDemo td){ int q=0; Outer: while(true){ td.mainMenu(); System.out.println("请输入对应数字进行操作:"); Inner: while(true){ q=stdIn.nextInt(); if(q==0){ break Outer; } switch(q){ case 1:td.testBanji(banji,student,school);break Outer; case 2:td.testSchool(banji,student,school);break Outer; default:System.out.println("您的输入超出范围,请重新输入:");continue Inner; } } } } public static void main(String[] args) { // TODO Auto-generated method stub TestDemo td=new TestDemo(); /** * 主学生列表 */ Banji banji=new Banji("b001","主学生列表"); Student student=new Student(); School school=new School(); school.addBanji(banji); td.test(banji,student,school,td); } } 这是根据老师的方法修改后的代码
士林健津_007
2019-03-31 13:19:15
班级类: public class Banji { //班级编号 班级名称 存放学生的集合 private String classId; private String className; private List<Student> stuList; private List<Student> stuList1; //带参构造方法 public Banji(String classId,String className){ this.setClassId(classId); this.setClassName(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; } public List<Student> getStuList1() { return stuList1; } public void setStuList1(List<Student> stuList1) { this.stuList1 = stuList1; } /** * 方法一:将学生添加到班级 * @param stu 要添加的学生 */ public void addStudent(Student stu){ boolean flag=false; for(Student stu1:stuList){ if(stu1.equals(stu)){ flag=true; break; } } if(flag){ System.out.println("该学生已经存在,请不要重复添加。"); }else{ stuList.add(stu); } } /** * 方法二:通过学号查询学生在班级中是否存在 * @param stuNum 要查询的学生的学号 * @return 学生的信息 */ public Student searchStudentByNum(String stuNum){ Student stu=null; for(Student stu2:stuList){ if(stu2.getId().equals(stuNum)){ //判断该学生是否存在 stu=stu2; break; } } return stu; } /** * 方法三:输入班级学生的语文成绩 * @param stuNum 要输入语文成绩的学生的学号 * @param score 要输入的语文成绩 */ public void insertChineseScore(String stuNum,float score){ for(Student stu3:stuList){ if(stu3.getId().equals(stuNum)){ stu3.setChinese(score); break; }else{ System.out.println("亲,没有该学生的信息哟。");break; } } } /** * 方法四:输入班级学生的数学成绩 * @param stuNum 要输入数学成绩的学生的学号 * @param score 要输入的数学成绩 */ public void insertMath(String stuNum,float score){ for(Student stu4:stuList){ if(stu4.getId().equals(stuNum)){ stu4.setMath(score); break; }else{ System.out.println("亲,没有该学生的信息哟。");break; } } } /** * 方法五:删除学生信息 * @param stuNum 要删除的学生的学号 */ public void deleteStudent(String stuNum){ for(Student stu5:stuList){ if(stu5.getId().equals(stuNum)){ stuList.remove(stu5); break; }else{ System.out.println("亲,没有该学生的信息哟。"); break; } } } /** * 方法六:显示所有学生的信息 */ public void displayAllStudent(){ for(Student stu6:stuList){ System.out.println(stu6); } } } 学生类: public class Student { // 属性:学号,姓名,数学成绩,语文成绩 private String id; private String name; private float math; private float chinese; // 无参构造方法 public Student() { } // 带参构造方法 public Student(String id, String name) { this.setId(id); this.setName(name); } public Student(float math,float chinese){ this.setMath(math); this.setChinese(chinese); } public Student(float chinese){ this.setMath(chinese); } // 封装 public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } 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; } // 重写HashCode方法 @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + Float.floatToIntBits(chinese); result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + Float.floatToIntBits(math); result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } // 重写equals方法 @Override public boolean equals(Object obj) { // 先判断对象是否相等,相等则返回true if (this == obj) { return true; } // 判断是否是同一个类 if (obj.getClass() == Student.class) { Student student = (Student) obj; // 强制类型转换 return student.getId().equals(id) & student.getName().equals(name) & student.getChinese()==(chinese) & student.getMath()==(math); } return false; } //重写toString方法 @Override public String toString() { return "学生信息[学号:" + id + ", 姓名:" + name + "]"; } }
士林健津_007
2019-03-31 13:13:37
学校类 public class School { private Map<String,Banji> schoolMap; //存放班级的集合 班级名称作为key值,班级信息作为value值 //构造方法 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; int n=schoolMap.size(); System.out.println(n); Set<String> banjiSet=schoolMap.keySet(); for(String banji3:banjiSet){ if(banji3.equals(className)){ banji=schoolMap.get(banji3); break; } } return banji; } /** * 方法四:对各班语文成绩按平均分进行由大到小排序 */ public void sortChineseByAverage(){ //使用Map集合存放班级语文成绩平均分,班级名称作为key值,平均分作为value值 Map<String,Float> banjiMap=new HashMap<String,Float>(); Banji banji=null; Set<String> banjiName=schoolMap.keySet(); //获取班级名称的集合 for(String s:banjiName){ //使用增强型for循环遍历班级名称集合 banji=this.searchByName(s); //确认班级是否存在 if(banji==null){ System.out.println("该班级不存在。");break; }else{ float chinese1=0.0f; int m=0; //System.out.println(s+"的平均分:"); //某班 List<Student> ls=banji.getStuList(); //获取班级类中存放学生的集合 Iterator <Student> stu=ls.iterator(); //使用迭代器循环遍历学生 while(stu.hasNext()){ //使用while循环遍历学生的语文成绩 chinese1+=stu.next().getChinese(); m++; } chinese1=chinese1/m; banjiMap.put(s, chinese1); } } List<Map.Entry<String,Float>> lm=new ArrayList<Map.Entry<String,Float>>(banjiMap.entrySet()); Collections.sort(lm, new Comparator<Map.Entry<String,Float>>(){ //降序排序 public int compare(Entry<String,Float> o1,Entry<String,Float> o2){ return o2.getValue().compareTo(o1.getValue()); } }); for(Map.Entry<String, Float> mes:lm){ System.out.println(mes.getKey()+"的平均分:"+mes.getValue()); } } /** * 方法六:显示所有班级名称 */ public void displayBanjiName(){ Set<String> banjiName=schoolMap.keySet(); for(String s:banjiName){ System.out.println(s); } } } 测试类: public class TestDemo { Scanner stdIn=new Scanner(System.in); School school=new School(); //方法一:主菜单 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 banjiMenu(){ 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 schoolMenu(){ 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 testBanji(Banji banji,Student student,School school){ TestDemo td=new TestDemo(); Outer: while(true){ td.banjiMenu(); System.out.println("请输入对应的数字对班级进行管理:"); Inner: while(true){ int w=stdIn.nextInt(); if(w==9){ td.test(); break Outer; } switch(w){ case 1:System.out.println("添加学生信息到主学生列表"); System.out.println("请输入要添加的学生的数量:"); int e=stdIn.nextInt(); for(int i=1;i<=e;i++){ System.out.println("请输入第"+i+"个学生信息:"); System.out.println("请输入学号:"); String id=stdIn.next(); System.out.println("请输入学生姓名:"); String name=stdIn.next(); Student stu=new Student(id,name); banji.addStudent(stu); } System.out.println("主学生列表的学生信息如下:"); banji.displayAllStudent(); break Inner; case 2:System.out.println("添加学生信息到普通班级"); System.out.println("从主学生列表获取学生分配班级"); System.out.println("请输入要将学生分配到的班级名称:"); String banjiName=stdIn.next(); Banji banji2=school.searchByName(banjiName); if(banji2==null){ System.out.println("亲,该班级不存在哟,赶快去添加吧。");break Inner; }else{ System.out.println("请输入要添加的学生的数量:"); int y=stdIn.nextInt(); for(int i=1;i<=y;i++){ System.out.println("请输入第"+i+"个学生信息:"); System.out.println("请输入学号:"); String id=stdIn.next(); //通过学生ID查询主学生列表中是否存在该ID的学生 Student stu2=banji.searchStudentByNum(id); if(stu2==null){ System.out.println("该学生在主学生列表中不存在,赶快去添加吧。");break Inner; }else{ banji2.addStudent(stu2); System.out.println("添加完成。"); } } } break Inner; case 3:System.out.println("通过学号查询学生信息"); System.out.println("请输入要查询的学生所在的班级名称:"); String str3=stdIn.next(); Banji banji3=school.searchByName(str3); if(banji3==null){ System.out.println("亲,该班级不存在哟。");break; }else{ System.out.println("请输入要查询的学生的学号:"); String str31=stdIn.next(); Student stu3=banji3.searchStudentByNum(str31); if(stu3==null){ System.out.println("亲,该学生不存在哟。");break; }else{ banji3.deleteStudent(str31); } } break Inner; case 4:System.out.println("输入班级的语文成绩"); break Inner; case 5:System.out.println("输入班级的数学成绩"); break Inner; case 6:System.out.println("删除学生信息"); break Inner; case 7:System.out.println("显示所有学生信息"); break Inner; default:System.out.println("您的输入超出范围,请重新输入:"); continue Inner; } } } } //方法五:学校的测试方法 public void testSchool(Banji banji,Student student,School school){ TestDemo td=new TestDemo(); int t=0; Outer: while(true){ td.schoolMenu(); System.out.println("请输入对应的数字对学校进行管理:"); Inner: while(true){ t=stdIn.nextInt(); if(t==9){ td.test(); break Outer; } switch(t){ case 1:System.out.println("创建班级"); System.out.println("请输入要创建的班级id:"); String banjiId=stdIn.next(); System.out.println("请输入要创建的班级名称:"); String banjiName=stdIn.next(); banji=new Banji(banjiId,banjiName); school.addBanji(banji); break Inner; case 2:System.out.println("删除班级"); System.out.println("请输入要删除的班级名称:"); String str2=stdIn.next(); if(str2.equals("主学生列表")){ System.out.println("主学生列表不能删除哟。");break; }else{ Banji banji2=school.searchByName(str2); if(banji2==null){ System.out.println("亲,该班级不存在哟。"); }else{ school.deleteBanji(banji2); } } break Inner; case 3:System.out.println("通过班级名称查询班级信息"); break Inner; case 4:System.out.println("对各班语文成绩按平均分进行由大到小排序"); break Inner; case 5:System.out.println("对各班数学成绩按平均分进行由大到小排序"); break Inner; case 6:System.out.println("显示所有班级名称"); school.displayBanjiName(); break Inner; default:System.out.println("您的输入超出范围,请重新输入:"); continue Inner; } } } } //方法六:主流程 public void test(){ TestDemo td=new TestDemo(); Banji banji=new Banji("b001","主学生列表"); Student student=new Student(); School school=new School(); school.addBanji(banji); int q=0; Outer: while(true){ td.mainMenu(); System.out.println("请输入对应数字进行操作:"); Inner: while(true){ q=stdIn.nextInt(); if(q==0){ break Outer; } switch(q){ case 1:td.testBanji(banji,student,school);break Outer; case 2:td.testSchool(banji,student,school);break Outer; default:System.out.println("您的输入超出范围,请重新输入:");continue Inner; } } } } public static void main(String[] args) { // TODO Auto-generated method stub TestDemo td=new TestDemo(); td.test(); } }
目前就是这样,请指点一下。
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星