4-8作业关于平均成绩的问题
1 | package com.imooc.student.homework;<br><br> public class Student {<br> // 学生类,定义属性<br> private String stuNum;// 学号<br> private String stuName;// 学生名字<br> private float math;// 数学<br> private float chinese;// 语文<br><br> public Student(String stuNum, String stuName) {<br> this.stuNum = stuNum;<br> this.stuName = stuName;<br> }<br><br> public Student(String stuNum, String stuName, float math, float chinese) {<br> this.stuNum = stuNum;<br> this.stuName = stuName;<br> this.math = math;<br> this.chinese = chinese;<br> }<br><br> public String getStuNum() {<br> return stuNum;<br> }<br><br> public void setStuNum(String stuNum) {<br> this.stuNum = stuNum;<br> }<br><br> public String getStuName() {<br> return stuName;<br> }<br><br> public void setStuName(String stuName) {<br> this.stuName = stuName;<br> }<br><br> public float getMath() {<br> return math;<br> }<br><br> public void setMath(float math) {<br> this.math = math;<br> }<br><br> public float getChinese() {<br> return chinese;<br> }<br><br> public void setChinese(float chinese) {<br> this.chinese = chinese;<br> }<br><br> @Override<br> public int hashCode() {<br> final int prime = 31;<br> int result = 1;<br> result = prime * result + Float.floatToIntBits(chinese);<br> result = prime * result + Float.floatToIntBits(math);<br> result = prime * result + ((stuName == null) ? 0 : stuName.hashCode());<br> result = prime * result + ((stuNum == null) ? 0 : stuNum.hashCode());<br> return result;<br> }<br><br> @Override<br> public boolean equals(Object obj) {<br> // 判断对象是否相等,如果相同返回true;<br> if (this == obj) {<br> return true;<br> }<br> // this!=obj,进行判断<br> if (obj.getClass() == Student.class) {<br> Student str = (Student) obj;<br> return str.getStuNum().equals(stuNum) && str.getStuName().equals(stuName);<br> }<br> return false;<br> }<br><br> @Override<br> public String toString() {<br> return "学生信息: [学号:" + stuNum + ", 姓名:" + stuName + "]";<br> }<br><br><br>}<br> |
1 | package com.imooc.student.homework;<br><br> import java.util.ArrayList;<br> import java.util.Iterator;<br> import java.util.List;<br><br> public class Banji {<br> //班级类<br> private String classId; //班级编号<br> private String className;//班级名称<br> private List<Student> stuList; //存放学生的集合,也就是班级内学生的信息;<br><br> //构造方法<br><br> public Banji() {<br> stuList=new ArrayList<Student>();<br> }<br> public Banji(String className) {<br> this.className = className;<br> stuList=new ArrayList<Student>();<br> }<br><br> public Banji(String classId,String className) {<br> this.classId=classId;<br> this.className=className;<br> stuList=new ArrayList<Student>(); <br> }<br> //get/set方法<br><br> public String getClassId() {<br> return classId;<br> }<br><br> public void setClassId(String classId) {<br> this.classId = classId;<br> }<br><br> public String getClassName() {<br> return className;<br> }<br><br> public void setClassName(String className) {<br> this.className = className;<br> }<br><br> public List<Student> getStuList() {<br> return stuList;<br> }<br><br> public void setStuList(List<Student> stuList) {<br> this.stuList = stuList;<br> }<br> /**<br> * 将学生添加到班级中<br> * @param stu 学生对象的信息<br> */<br> public void addStudent(Student stu) {<br> //排除重复添加情况<br> //判断该学生是否存在<br> boolean flag=false;<br> for(Student s:stuList) {<br> if(s.getStuNum().equals(stu.getStuNum())) { //对象进行比较,如果已存在<br> flag=true;<br> break; //返回true,无需添加<br> }<br> }<br> if(flag) {<br> System.out.println("学生信息已存在,添加失败!");<br> }else {<br> stuList.add(stu);<br><br> }<br> }//添加学生方法结束!<br><br> /**<br> * 通过学号查询学生在班级中是否存在<br> * @param stuNum 学生的学号<br> * @return 查到的学生的信息<br> */<br> public Student searchStudentByNum(String stuNum) {<br> //定义一个Student 的对象,接收信息<br> Student str=null;<br> //stuNum是唯一的,所以先进行遍历查询<br> for(Student s:stuList) {<br> //进行判断是否一致<br> if(s.getStuNum().equals(stuNum)){//如果一致则证明查询到了此学生在班级中存在<br> str=s;<br> break;<br> }<br> }<br> return str;<br> }//通过学号查询是否在班级存在方法 结束!<br><br> /**<br> * 输入班级学生的语文成绩<br> * @param stuNum 学生的学号<br> * @param score 学生的成绩<br> */<br> public void insertChineseScore(String stuNum,float score) {<br> //进行学生信息遍历,通过id查询到学生<br> for(Student s:stuList) {<br> if(s.getStuNum().equals(stuNum)){//判断学生学号是否一致,如一致进行赋值<br> s.setChinese(score);<br> System.out.println("添加语文成绩成功!");<br> break;<br> } <br> }<br> } // 添加语文成绩方法结束!<br><br> /**<br> * 输入班级学生的数学成绩<br> * @param stuNum 学生的学号<br> * @param score 学生的数学成绩<br> */<br> public void insertMathScore(String stuNum,float score) {<br> //进行学生信息遍历,然后通过学号查询到学生进行判断<br> for(Student s:stuList) {<br> //进行判断<br> if(s.getStuNum().equals(stuNum)) {<br> //如果传入学生的学号信息和当前s学生信息相同,则进行赋值<br> s.setMath(score);<br> System.out.println("添加数学成绩成功!");<br> break;<br> }<br> }<br> }//添加数学成绩方法结束!<br><br> /**<br> * 通过学号删除学生信息 <br> * @param stuNum 学生学号<br> */<br> public void deleteStudent(String stuNum) {<br> Student stu=null;<br> //通过遍历查询学生信息,然后通过学号确定信息是否一致,<br> for(Student s:stuList) {<br> if(s.getStuNum().equals(stuNum)) {<br> stu=s;//如一致进行删除;<br> stuList.remove(stu);<br> }else {<br> System.out.println("没有找到该学生的信息,删除失败!");<br> }<br> }<br> }//删除学生信息方法结束!<br><br> /**<br> * 显示所有学生信息<br> */<br> public void displayAllStudent() {<br> Iterator<Student> it=stuList.iterator();<br> while(it.hasNext()) {<br> System.out.println(it.next());<br> }<br> }<br> public String toString() {<br><br> return "班级信息: [班级编号:" + classId + ", 班级名称:" + className + "]";<br><br> }<br><br><br><br><br><br><br>}<br> |
1 | package com.imooc.student.homework;<br><br> import java.util.ArrayList;<br> import java.util.Collections;<br> import java.util.Comparator;<br> import java.util.HashMap;<br> import java.util.Iterator;<br> import java.util.List;<br> import java.util.Map;<br> import java.util.Map.Entry;<br> import java.util.Set;<br><br> public class School {<br> //存放班级的集合,key :班级的名称,value:班级内学生的信息<br> Map<String,Banji> schoolMap;<br> //构造方法:<br> public School() {<br> schoolMap=new HashMap<String,Banji>();<br> }<br> //get/set方法<br> public Map<String, Banji> getSchoolMap() {<br> return schoolMap;<br> }<br> public void setSchoolMap(Map<String, Banji> schoolMap) {<br> this.schoolMap = schoolMap;<br> }<br><br> /**<br> * 添加班级<br> * @param banji 要添加的班级信息<br> */<br> public void addBanji(Banji banji) {<br> //key :班级的名称;value :班级内学生的信息<br> schoolMap.put(banji.getClassName(), banji);<br> }//添加班级方法结束<br><br> /**<br> * 删除班级<br> * @param banji 要删除班级的信息<br> */<br> public void deleteBanji(Banji banji) {<br> //要排除重复添加的情况<br> boolean flag=false;//判断班级信息是否存在<br> //取出所有班级名称<br> Set<String> set=schoolMap.keySet();<br> //进行循环查询,并判断<br> for(String s:set) {<br> if(banji.getClassName().equals(s)) {<br> flag=true;break;<br> }<br> }<br> if(flag) {<br> //如果为true进行删除,<br> schoolMap.remove(banji.getClassName());<br> System.out.println("删除成功!");<br> }else {<br> System.out.println("该班级不存在");<br> }<br>// //通过key值去删除班级的信息;<br>// schoolMap.remove(banji.getClassId());<br>// //提示语句:<br>// System.out.println("删除成功!");<br> }//删除班级方法结束<br><br> /**<br> * 通过班级名称查询班级信息 <br> * @param className 班级名称 <br> * @return 查询到的班级信息<br> */<br> public Banji searchByName(String className) {<br> //创建一个banji的对象为null值,用来接收数据,方法1:<br> Banji banji=null;<br>// //通过Map集合把所有key值赋值给 Set集合;<br>// Set<String>banjiSet=schoolMap.keySet();<br>// //通过增强循环,查询key值信息是否一致,如一致进行取出key值,<br>// for(String s:banjiSet) {<br>// if(s.equals(className)) {<br>// //通过key值查询Value值,也就是通过班级名称,查询班级内部学生信息<br>// banji=schoolMap.get(s);<br>// }<br>// }<br> //方法2:通过迭代器方法,因为Map没有迭代器方法,所有通过keySet方法的返回调用iterator方法;<br> Iterator<String> it=schoolMap.keySet().iterator();<br> while(it.hasNext()) {<br> //把查询到的key值赋值给key对象;<br> String key=it.next();<br> //继续内容判断 ,当前key的信息与传进来的className进行是否一致,如一致就是查到了;<br> if(key.equals(className)) {<br> banji=schoolMap.get(key);<br> }<br><br><br> }<br> return banji;<br> }//通过班级名称查询班级信息方法结束<br><br> /**<br> * 对各班语文成绩平均分进行倒序排序,也就是又大到小<br> */<br> public void sortChineseByAverage() {<br> //创建Map集合,把key-班级名称,和value-成绩存放Map集合<br> Map<String,Float>scoreMap=new HashMap<String,Float>();<br> //取出所有班级名称列表,并赋值给 新对象scoreList;<br> Set<String> scoreList=schoolMap.keySet();<br> //用来接收班级名称信息;<br> Banji bj=null;<br> //进行遍历班级名称,并判断班级是否存在<br> for(String s:scoreList) {<br> if(s.equals("主学生列表")) { //平均成绩只对班级有效,主学生列表包含所有学生,所有跳出循环<br> continue;<br> //把查询到的班级名称存放到bj对象中; <br> } bj=this.searchByName(s);<br> //对bj信息进行判断<br> if(bj==null) {<br> System.out.println("班级不存在!");<br> }else {//进行成绩存放,<br> float sum=0.0f; //成绩和<br> int i=0; //学生人数<br> //获取每个班级学生信息;<br> List<Student> listStudent=bj.getStuList();<br> //用迭代器遍历所有学生信息<br> Iterator<Student> it=listStudent.iterator();<br> while(it.hasNext()) {<br> i++; //每判断还有下一个信息,学生人数+1;<br> sum+=it.next().getChinese();//成绩和,调用查询到的学生信息然后在调用成绩方法,<br> }<br> //获取平均分<br> float ave=sum/i;<br> //把平均分添加到Map集合中,班级名称为key值;<br> scoreMap.put(s, ave);<br> }<br> }<br> //将scoreMap中的每个key-value存放到List集合中进行排序,entrySet方法获取所有键值信息;<br> List<Map.Entry<String,Float>> list=new ArrayList<Map.Entry<String,Float>>(scoreMap.entrySet());<br> //对List集合进行排序,并且通过匿名内部类实现排序;<br> Collections.sort(list, new Comparator<Map.Entry<String,Float>>(){<br> public int compare(Entry<String,Float> o1,Entry<String,Float>o2) {<br> return o2.getValue().compareTo(o1.getValue());<br> }<br> });<br> //提示语句<br> System.out.println("排序后的数据为:");<br> //把list中所有学生的信息 存放到Map.Entry集合中<br> for(Map.Entry<String,Float> s:list) {<br> System.out.println(s.getKey()+"的平均分"+s.getValue());<br> }<br> }//语文成绩排序方法结束<br><br> /**<br> * 对各班数学成绩进行降序,也就是从大到小排序;<br> */<br> public void sortMathByAverage() {<br> //创建Map集合,把key-班级名称,和value-成绩存放Map集合<br> Map<String,Float>scoreMap=new HashMap<String,Float>();<br> //取出所有班级信息,并赋值给 新对象scoreList;<br> Set<String>scoreList=schoolMap.keySet();<br> //用来接收班级名称信息;<br> Banji bj=null;<br> //进行遍历班级名称,并判断班级是否存在<br> for(String s:scoreList) {<br> if(s.equals("主学生列表")) {//平均成绩只对存在的班级有效,主学生列表包含所有学生,所有跳出循环<br> continue;<br> //把查询到的班级名称存放到bj对象中;<br> } bj=this.searchByName(s);<br> //对bj信息进行判断<br> if(bj==null) {<br> System.out.println("班级不存在!");<br> }else {//进行成绩存放,<br> float sum=0.0f; //成绩<br> int i=0;//学生人数<br> //获取每个班级学生信息,并存放到List,新对象中 <br> List<Student> listStudent=bj.getStuList();<br> //通过迭代器输出所有学生信息;<br> Iterator<Student> it=listStudent.iterator();<br> while(it.hasNext()) {<br> i++;<br> sum+=it.next().getChinese();<br> }<br> //获取平均分<br> float ave=sum/i;<br> //把平均分添加到Map集合中,班级名称为key值;<br> scoreMap.put(s, ave);<br> }<br> }<br> //将scoreMap中的每个key-value存放到List集合中进行排序,entrySet方法获取所有键值信息;<br> List<Map.Entry<String, Float>> list=new ArrayList<Map.Entry<String,Float>>(scoreMap.entrySet());<br> //对List集合进行排序,并且通过匿名内部类实现排序;<br> Collections.sort(list, new Comparator<Map.Entry<String, Float>>() {<br> public int compare(Map.Entry<String, Float>o1,Map.Entry<String, Float>o2) {<br> return o2.getValue().compareTo(o1.getValue());<br> }<br> });<br> //提示语句<br> System.out.println("排序后的数据为:");<br> //把list中所有学生的信息 存放到Map.Entry集合中<br> for(Map.Entry<String, Float> s:list) {<br> System.out.println(s.getKey()+"的平均分"+s.getValue());<br> }<br> }//数学成绩排序方法结束<br><br> /**<br> * 显示所有班级名称<br> */<br> public void displayBanjiName() {<br> //先取出所有班级名称信息<br> String key=null;<br> Set<String> set=schoolMap.keySet();<br> for(String s:set) {<br> key=s;<br> System.out.println(key);<br> }<br><br> //通过迭代器方法<br>// Iterator<Banji> it=schoolMap.values().iterator();<br>// while(it.hasNext()) {<br>// System.out.println(it.next().getClassName());<br>// }<br> }//显示所有班级名称方法结束<br>}<br> |
测试类:
1 | package com.imooc.student.homework;<br><br> import java.util.InputMismatchException;<br> import java.util.List;<br> import java.util.Scanner;<br><br> public class TestDemo {<br><br> /**<br> * 班级的测试方法<br> */ <br> public void testBanji() {<br> //实例化创建对象<br> Student stu1=new Student("soo1","张三");<br> Student stu2=new Student("soo2","李四");<br> Student stu3=new Student("soo3","王五");<br> Student stu4=new Student("soo1","张四");<br> Banji bj=new Banji("soo1","一班");<br> //测试1:将学生添加到班级中<br> bj.addStudent(stu1);<br> bj.addStudent(stu2);<br> bj.addStudent(stu3);<br> //重复添加学生到班级中<br> bj.addStudent(stu4);<br>// 显示所有班级的信息<br> bj.displayAllStudent();<br> //测试通过学号查询学生信息<br> System.out.println("通过学号查询学生信息:");<br> System.out.println(bj.searchStudentByNum("soo1"));<br><br> //输入班级的语文数学成绩测试<br> bj.insertChineseScore("soo1", 80);<br> System.out.println(stu1+"的语文成绩为:"+stu1.getChinese());<br> //测试删除学生信息<br> bj.deleteStudent("soo2");<br> System.out.println("删除后的信息为:");<br> bj.displayAllStudent();<br> }<br><br> /**<br> * 学校的测试方法<br> */<br> public void testSchool() {<br> //添加班级<br> Student stu1=new Student("s001","张三");<br> Student stu2=new Student("s002","李四");<br> Student stu3=new Student("s003","王五");<br> Banji bj=new Banji("s0001","三班");<br> bj.addStudent(stu1);<br> bj.addStudent(stu2);<br> bj.addStudent(stu3);<br> bj.insertChineseScore("s001", 80);<br> bj.insertChineseScore("s002",70);<br> bj.insertChineseScore("s003", 60);<br> School sc=new School();<br> sc.addBanji(bj);<br> //添加普通班级信息,并从主学生列表读取信息<br> Banji bj1=new Banji("s0002","一班");<br> bj1.addStudent(bj.getStuList().get(0));<br> bj1.addStudent(bj.getStuList().get(1));<br> bj1.addStudent(bj.getStuList().get(2));<br> sc.addBanji(bj1);<br> System.out.println("显示所有班级信息:");<br> sc.displayBanjiName();<br> //删除班级<br> sc.deleteBanji(bj1);<br> System.out.println("删除后班级信息为:");<br> sc.displayBanjiName();<br> //通过班级名称查询班级<br> System.out.println(sc.searchByName("主学生列表"));<br> System.out.println(sc.searchByName("一班"));<br> //对成绩平均分进行排序<br><br> sc.sortChineseByAverage();<br> }<br> /**<br> * 主菜单<br> */<br> public void mainMenu() {<br> System.out.println("***************************");<br> System.out.println( "**主菜单**");<br> System.out.println( "1--班级管理");<br> System.out.println( "2--学校管理");<br> System.out.println( "0--退出");<br> System.out.println("***************************");<br> }<br> /**<br> * 学校管理菜单<br> */<br> public void schoolMenu() {<br> System.out.println("*******************************************************");<br> System.out.println( "**学校管理**");<br> System.out.println( "1--创建班级");<br> System.out.println( "2--删除班级");<br> System.out.println( "3--通过班级名称查询班级信息");<br> System.out.println( "4--对各班语文成绩平均分进行由大到小排序");<br> System.out.println( "5--对各班数学成绩平均分进行由大到小排序");<br> System.out.println( "6--显示所有班级名称");<br> System.out.println( "9--返回上级菜单");<br> System.out.println("*******************************************************");<br> }<br><br> /**<br> * 班级管理菜单<br> */<br> public void banjiMenu() {<br> System.out.println("*******************************************************");<br> System.out.println( "**班级管理**");<br> System.out.println( "1--添加学生信息到主学生列表");<br> System.out.println( "2--添加学生信息到普通班级");<br> System.out.println( "3--通过学号查询学生信息");<br> System.out.println( "4--输入班级语文成绩");<br> System.out.println( "5--输入班级数学成绩");<br> System.out.println( "6--删除学生信息");<br> System.out.println( "7--显示所有学生信息");<br> System.out.println( "9--返回上级菜单");<br> System.out.println("*******************************************************");<br> }<br><br> /**<br> * 主流程<br> */<br> public void test() {<br> //实例化测试类<br> TestDemo td=new TestDemo();<br> Scanner sc=new Scanner(System.in);<br> //定义3个变量,用来接收菜单数据<br> int input=0,input1=0,input2=0;<br> //创建学校对象并实例化<br> School sch=new School();<br> //创建班级对象(主学生列表)并实例化<br> Banji mainBanJi=new Banji("主学生列表");<br> //将班级对象添加到学校中,后期在case中再添加学生信息<br> sch.addBanji(mainBanJi);<br> //声明其他班级对象信息,后期用来接收其他班级信息<br> Banji otherBanJi=null;<br><br> //进行循环主菜单<br> while(true) {<br> td.mainMenu();<br> System.out.println("请输入对应数字进行列表管理");<br> //从键盘接收数据,input为控制主菜单列表管理<br> try {<br> input=sc.nextInt();<br> if(input==0) {<br> break;<br> }<br> } catch (InputMismatchException e) {<br> System.out.println("输入信息有误,只可输入整数,请重新输入!");<br> sc.next();//接收错误数据<br> continue;//重新执行本次循环<br> }<br> switch(input) {<br> case 1://班级管理<br> while(true) {<br> td.banjiMenu();<br> System.out.println("请输入对应数字进行班级列表管理");<br> try {<br> input1=sc.nextInt();<br> } catch (InputMismatchException e) {<br> System.out.println("输入信息有误,只可输入整数,请重新输入!");<br> sc.next();//接收错误数据<br> continue;//重新执行本次循环<br> }<br> if(input1==9) {<br> break;<br> }<br> switch(input1) {<br> case 1:<br> System.out.println("添加学生信息到主学生列表");<br> System.out.println("请输入要添加的学生信息个数:");<br> int count=0;<br> try {<br> count = sc.nextInt();<br> } catch (InputMismatchException e) {<br> System.out.println("输入信息有误,只可输入整数,请重新输入!");<br> sc.next();//接收错误数据<br> continue;<br> }<br> for(int i=1;i<=count;i++) {<br> System.out.println("请输入第"+i+"个学生的信息");<br> System.out.println("请输入学生的id:");<br> String strNum=sc.next();<br> System.out.println("请输入学生的姓名:");<br> String strName=sc.next();<br> //创建学生对象<br> Student stu=new Student(strNum,strName);<br> //把学生信息添加到主学生列表<br> mainBanJi.addStudent(stu);<br> System.out.println("添加成功");<br> }<br> System.out.println(mainBanJi.getClassName()+"的学生信息为:");<br> mainBanJi.displayAllStudent();<br> break;<br> case 2:<br> System.out.println("添加学生信息到普通列表");<br> System.out.println("请输入要添加的班级名称:");<br> String strName=sc.next();<br> //判断班级名称是否存在<br> otherBanJi=sch.searchByName(strName);<br> if(otherBanJi==null) {<br> System.out.println("未查询到此班级");<br> }else {<br> System.out.println("请输入要添加的学生个数:");<br> int count1=0;<br> try {<br> count1=sc.nextInt();<br> } catch (InputMismatchException e) {<br> System.out.println("输入信息有误,只可输入整数,请重新输入!");<br> sc.next();//接收错误数据<br> continue;<br> }<br> for(int i=1;i<=count1;i++) {<br> System.out.println("请输入第"+i+"个学生信息:");<br> System.out.println("请输入要添加的学生id:");<br> String strNum=sc.next();<br> Student stu=mainBanJi.searchStudentByNum(strNum);<br> if(stu==null) {<br> //主学生列表如果不存在此学生信息,那么需要在主学生列表也添加此学生信息<br> System.out.println("该学生信息在主学生列表当中不存在,请输入学生的其他信息");<br> System.out.println("请输入要添加的学生姓名:");<br> String strName1=sc.next();<br> //创建一个学生对象。<br> stu=new Student(strNum,strName1);<br> mainBanJi.addStudent(stu);<br> otherBanJi.addStudent(stu);<br><br> }else {<br> otherBanJi.addStudent(stu);<br><br> }<br> System.out.println("添加成功");<br> } <br> //显示所有班级的信息<br> System.out.println(mainBanJi.getClassName());<br> mainBanJi.displayAllStudent();<br> System.out.println(otherBanJi.getClassName()+"班级列表");<br> otherBanJi.displayAllStudent();<br> }<br> break;<br> case 3:<br> System.out.println("通过学号查询学生信息");<br> System.out.println("请输入要查询的班级名称:");<br> String strName1=sc.next();<br> Banji bj=sch.searchByName(strName1);<br> if(bj==null) {<br> System.out.println("此班级不存在");<br> }else {<br> System.out.println("请输入要查询的学生Id:");<br> String strNum=sc.next();<br> Student stu = bj.searchStudentByNum(strNum);<br> if(stu==null) {<br> System.out.println("该学生信息在"+bj.getClassName()+"不存在");<br> }else {<br> System.out.println(stu);<br> }<br> }<br> break;<br> case 4:<br> System.out.println("输入班级的语文成绩");<br> System.out.println("请输入班级的名称:");<br> String strName2=sc.next();<br> bj=sch.searchByName(strName2);<br> if(bj==null) {<br> System.out.println("该班级不存在");<br> }else {<br> for(Student stu:bj.getStuList()) {<br> System.out.println("学生id:"+stu.getStuNum()+"学生姓名:"+stu.getStuName());<br> System.out.println("请输入学生的语文成绩:");<br> try {<br> float scoer=sc.nextFloat();<br> } catch (InputMismatchException e) {<br> System.out.println("输入信息有误,只可输入数字,请重新输入!");<br> sc.next();//接收错误数据<br> continue;<br> }<br> bj.insertChineseScore(stu.getStuNum(),stu.getChinese());<br> }<br> }<br> break;<br> case 5:<br> System.out.println("输入班级的数学成绩");<br> System.out.println("请输入班级的名称:");<br> String strName3=sc.next();<br> bj=sch.searchByName(strName3);<br> if(bj==null) {<br> System.out.println("该班级不存在");<br> }else {<br> for(Student stu:bj.getStuList()) {<br> System.out.println("学生id:"+stu.getStuNum()+"学生姓名:"+stu.getStuName());<br> System.out.println("请输入数学成绩:");<br> try {<br> float score=sc.nextFloat();<br> } catch (InputMismatchException e) {<br> System.out.println("输入信息有误,只可输入数字,请重新输入!");<br> sc.next();//接收错误数据<br> continue;<br> }<br> bj.insertMathScore(stu.getStuNum(), stu.getMath());<br> }<br> }<br> break;<br> case 6:<br> System.out.println("删除学生信息");<br> System.out.println("请输入班级的名称:");<br> String strName4=sc.next();<br> bj=sch.searchByName(strName4);<br> if(bj==null) {<br> System.out.println("该班级不存在!");<br> }else {<br> System.out.println("请输入学生Id:");<br> String strNum2=sc.next();<br> Student stu=bj.searchStudentByNum(strNum2);<br> if(stu==null) {<br> System.out.println("没有找到"+stu.getStuNum()+"的学生信息");<br> }else {<br> bj.deleteStudent(strNum2);<br> System.out.println("删除成功");<br> } <br> }<br> break;<br> case 7:<br> System.out.println("显示所有学生信息");<br> System.out.println("请输入班级的名称:");<br> String strName5=sc.next();<br> bj=sch.searchByName(strName5);<br> if(bj==null) {<br> System.out.println("该班级不存在");<br> }else {<br> bj.displayAllStudent();<br> }<br> break;<br> default :<br> System.out.println("输入有误,没有对应的操作");<br> }<br> }<br> break;<br> case 2://学校管理<br> while(true) {<br> td.schoolMenu();;<br> System.out.println("请输入对应的数字进行学校列表管理");<br> try {<br> input2=sc.nextInt();<br> } catch (InputMismatchException e) {<br> System.out.println("输入信息有误,只可输入整数,请重新输入!");<br> sc.next();<br> continue;<br> }<br> if(input2==9) {<br> break;<br> }<br> switch(input2) {<br> case 1:<br> System.out.println("向学校中添加班级");<br> System.out.println("请输入班级编号:");<br> String strNum=sc.next();<br> System.out.println("请输入班级名称:");<br> String strName=sc.next();<br> Banji bj1=sch.searchByName(strName);<br> if(bj1==null) {<br> System.out.println("");<br> //创建新的班级<br> otherBanJi=new Banji(strNum,strName);<br> //把新创建的班级添加到学校中<br> sch.addBanji(otherBanJi);<br> System.out.println("添加成功");<br> }else {<br> System.out.println("添加失败,信息重复");<br> }<br> break;<br> case 2:<br> System.out.println("从学校中删除班级");<br> System.out.println("请输入班级名称:");<br> String strName1=sc.next();<br> Banji bj2=sch.searchByName(strName1);<br> if(bj2==null) {<br> System.out.println("该班级不存在");<br> }else {<br> sch.deleteBanji(bj2);<br> System.out.println("删除成功");<br> }<br> break;<br> case 3:<br> System.out.println("通过班级名称查询班级");<br> System.out.println("请输入需要查询班级的名称:");<br> String strName2=sc.next();<br> Banji bj3=sch.searchByName(strName2);<br> if(bj3==null) {<br> System.out.println("此班级不存在");<br> }else {<br> System.out.println(bj3);<br> }<br> break;<br> case 4:<br> System.out.println("对各班语文成绩按平均分进行由大到小排序");<br><br> if(mainBanJi.getStuList().isEmpty()) {<br> System.out.println("还未向班级中添加学生");<br> }else {<br> for(Student stu:mainBanJi.getStuList()) {<br> if(stu.getChinese()<0.0||stu.getMath()<0.0) {<br> System.out.println("该班成绩还未添加,需先添加班级成绩");<br> }else {<br> System.out.println("语文平均成绩由大到小的排序为:");<br> sch.sortChineseByAverage();<br> }<br> }<br><br><br><br> }<br><br> break;<br> case 5:<br> System.out.println("对各班数学成绩按平均分进行由大到小排序");<br> if(mainBanJi.getStuList().isEmpty()) {<br> System.out.println("还未向班级中添加学生");<br> }else {<br> System.out.println("数学平均成绩由大到小的排序为:");<br> sch.sortMathByAverage();}<br> break;<br> case 6:<br> System.out.println("显示所有班级名称");<br> System.out.println("所有的班级名称为:");<br> sch.displayBanjiName();<br> break;<br> default:<br> System.out.println("输入有误,没有对应的操作"); <br> }<br> }<br> break;<br> default :<br> System.out.println("输入有误,没有对应的操作");<br> }<br> }<br> }//方法结束<br><br> public static void main(String[] args) {<br> // TODO Auto-generated method stub<br> TestDemo t=new TestDemo();<br>// t.testBanji();<br>// t.testSchool();<br> t.test();<br><br> }<br><br>}<br> |
问题:
如果在没有创建班级的时候,在
4--对各班语文成绩平均分进行由大到小排序,结果为:
还未向班级中添加学生; 但是如果对主列表学生添加过信息后,并为对班级中添加学生,结果为平均分
一班的平均分NaN,怎么解决这个问题阿。应该提示还没向班级添加成绩。而不是这个。我用otherBanJi.getStuList();会出现空指针异常;
35
收起
正在回答 回答被采纳积分+1
java工程师2020版
- 参与学习 人
- 提交作业 9404 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧