老师来康康,有点问题

老师来康康,有点问题

public class Student {
	//属性
	private String stuNum,stuName;
	private float math,chinese;
	//构造方法
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Student(String stuNum, String stuName) {
		super();
		this.stuNum = stuNum;
		this.stuName = stuName;
	}
	//getter和setter方法
	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;
	}
	//hashCode方法
	@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;
	}
	//equals方法
	@Override
	public boolean equals(Object obj) {
		//判断对象是否相等
		if (this == obj)
			return true;
		//this!=obj时
		if(obj.getClass()==Student.class) {
			Student student=(Student)obj;
			return (student.getStuNum().equals(stuNum)&&student.getStuName().equals(stuName)&&(student.getMath()==math)&&(student.getChinese()==chinese));
		}
		return false;
		
		
	}
	//toString方法
	@Override
	public String toString() {
		return "学生信息:[学号:" + stuNum + ",姓名:" + stuName + ",数学成绩:" + math + ",语文成绩:" + chinese + "]";
	}
}
=============================================================
import java.util.ArrayList;
import java.util.List;

public class Banji{
	//属性
	private String classId,className;//班级id,班级名称
	private List<Student> stuList=new ArrayList<Student>();//存放学生的集合
	int cNum=0;
	float cSum=0;
	int mNum=0;
	float mSum=0;
	
	//构造方法
	public Banji() {
		super();
		//stuList=new ArrayList<Student>();
		// TODO Auto-generated constructor stub
	}
	public Banji(String classId, String className) {
		super();
		this.setClassId(classId);
		this.setClassName(className);
		//stuList=new ArrayList<Student>();
	}
	//getter和setter方法
	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 getStuList() {
		return stuList;
	}
	public void setStuList(List stuList) {
		this.stuList = stuList;
	}
	/**
	 * 将学生添加到班级,判断学生是否存在,如存在给出提示,不存在则添加信息
	 * @param stu 要添加的学生信息
	 */
	public void addStudent(Student stu) {
		boolean flag=false;//判断班级中的学生是否存在
		for(Student s:stuList) {
			if(s.equals(stu)) {
				flag=true;
				break;
			}
		}
		if(flag) {
			System.out.println("该学生信息已添加");
		}else {
			stuList.add(stu);
			System.out.println("添加成功");
		}
	}
	/**
	 * 通过学号查询学生在班级中是否存在,存在返回学生信息,不存在返回null
	 * @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;
	}
	/**
	 * 通过姓名查询学生在班级中是否存在,存在返回学生信息,不存在返回null
	 * @param stuNum 传入学生的学号
	 * @return 返回学生信息
	 */
	public Student searchStudentByName(String stuName) {
		Student student = null;
		//学号是唯一的
		for(Student student1:stuList) {
			if(student1.getStuName().equals(stuName)) {
				student=student1;
				break;
			}
		}
		return student;
	}
	List<Float> chineseScoreList=new ArrayList<Float>();
	/**
	 * 添加学生的语文成绩到对应学号
	 * @param stuNum 学生学号
	 * @param score 语文成绩
	 */
	public void insertChineseScore(String stuNum,float score){
		Student student=searchStudentByNum(stuNum);
		if(student!=null) {
			student.setChinese(score);
			System.out.println("添加成功");
			//cNum++;
			chineseScoreList.add(score);
		}else {
			System.out.println("没有学号为"+stuNum+"的学生,请重新输入");
		}	
	}
	/**
	 * 获取班级语文平均
	 * @return
	 */
	public float getAvgChinese(){
		float avgChinese=0,totChinese=0;

		for(int i=0;i<chineseScoreList.size();i++) {

			totChinese=totChinese+chineseScoreList.get(i);

		}

		avgChinese=totChinese/chineseScoreList.size();

		return avgChinese;
	} 
	/**
	 * 输入班级学生的数学成绩
	 * @param stuNum 学生学号
	 * @param score 数学成绩
	 */
	public void insertMathScore(String stuNum,float score){
		Student student=searchStudentByNum(stuNum);
		if(student!=null) {
			student.setMath(score);
			System.out.println("添加成功");
			mNum++;
			mSum+=score;
		}else {
			System.out.println("没有学号为"+stuNum+"的学生,请重新输入");
		}
	}
	/**
	 * 获取班级数学平均
	 * @return
	 */
	public float getAvgMath(){
		float avgMath=0;
		avgMath=mSum/mNum;
		return avgMath;
	} 
	/**
	 *  删除学生信息
	 * @param stuNum 传入要删除信息的学号
	 */
	public void deleteStudent(String stuNum){
		Student student=searchStudentByNum(stuNum);
		if(student!=null) {
			stuList.remove(student);
		}else {
			System.out.println("没有学号为"+stuNum+"的学生,请重新输入");
		}
	}
	/**
	 * 显示所有学生的信息(包括学号和姓名)
	 */
	public void displayAllStudent(){
		if(stuList.isEmpty()) {
			System.out.println("还未添加学生信息,请先添加");
		}else {
			System.out.println("班级里所有学生的信息:");
			for(Student student:stuList) {
				System.out.println(student);
			}
		}
		
		
	}
}
============================================================
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.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

public class School {
	// 属性
	private Map<String, Banji> schoolMap;
	// 构造方法

	public School() {
		super();
		schoolMap = new HashMap<String, Banji>();
		// TODO Auto-generated constructor stub
	}

	public School(Map<String, Banji> schoolMap) {
		super();
		this.schoolMap = schoolMap;
		schoolMap = new HashMap<String, Banji>();
	}

	// getter和setter方法
	public Map getSchoolMap() {
		return schoolMap;
	}

	public void setSchoolMap(Map schoolMap) {
		this.schoolMap = schoolMap;
	}

	/**
	 * 添加班级
	 * @param banji
	 */
	public void addBanji(Banji banji) {
		//将schoolMap的key值存放进Set集合s中
				Set<String>s=schoolMap.keySet();
				//判断s集合中是否有重复班级名
				if(s.contains(banji.getClassName())){
					System.out.println(banji.getClassName()+"已存在,添加失败");
				}else{
					schoolMap.put(banji.getClassName(), banji);
					System.out.println(banji.getClassName()+"添加成功");
				}
	}

	/**
	 * 删除班级
	 * @param banji
	 */
	public void deleteBanji(Banji banji) {
		//判断schoolMap中是否有输入班级名称信息,如果有,删除
		if(banji==null) {
			System.out.println("未找到班级信息");
		}
		if(schoolMap.keySet().contains(banji.getClassName())){
			schoolMap.remove(banji.getClassName());
			System.out.println("删除成功!");
	}else{
			System.out.println("未找到班级信息");
		}
	}

	/**
	 * 通过班级名称查询班级
	 * @param className
	 * @return
	 */
	public Banji searchByName(String className) {
		Banji banji =null;

		Set<String> keySet=schoolMap.keySet();
		for(String s:keySet){
			if(s.equals(className)){
				banji=schoolMap.get(s);break;
			}
		}
		return banji;
	}

	/**
	 * 对各班语文成绩按平均分进行由大到小排序
	 */
	public void sortChineseByAverage() {
		Set<String> stuListSet = schoolMap.keySet();
		Map<String, Banji> map = new TreeMap<String, Banji>();
		for (String s : stuListSet) {
			schoolMap.get(s).getAvgChinese();
			map.put(s, schoolMap.get(s));
			map.remove("主学生列表");
		}
		// 这里将map.entrySet()转换成list
		List<Map.Entry<String, Banji>> list = new ArrayList<Map.Entry<String, Banji>>(map.entrySet());
		// 然后通过比较器来实现排序
		Collections.sort(list, new Comparator<Map.Entry<String, Banji>>() {
			@Override
			public int compare(Entry<String, Banji> o1, Entry<String, Banji> o2) {
				// TODO Auto-generated method stub
				float chinese1 = o1.getValue().getAvgChinese();
				float chinese2 = o2.getValue().getAvgChinese();
				int n = (int) (chinese2 - chinese1);
				return n;
			}
		});
		if(stuListSet==null) {
			System.out.println("还未添加");
		}else {
			System.out.println("语文平均成绩由大到小的排序为:");
			for (Entry<String, Banji> mapping : list) {
					System.out.println(mapping.getValue().getClassName() + "的平均分:" + mapping.getValue().getAvgChinese());			
			}
		}
	}

	/**
	 * 对各班数学成绩按平均分进行由大到小排序
	 */
	public void sortMathByAverage() {
		Set<String> stuListSet = schoolMap.keySet();

		Map<String, Banji> map = new TreeMap<String, Banji>();
		for (String s : stuListSet) {
			schoolMap.get(s).getAvgMath();
			map.put(s, schoolMap.get(s));
			map.remove("主学生列表");
		}
		// 这里将map.entrySet()转换成list
		List<Map.Entry<String, Banji>> list = new ArrayList<Map.Entry<String, Banji>>(map.entrySet());
		// 然后通过比较器来实现排序
		Collections.sort(list, new Comparator<Map.Entry<String, Banji>>() {
			@Override
			public int compare(Entry<String, Banji> o1, Entry<String, Banji> o2) {
				// TODO Auto-generated method stub
				float math1 = o1.getValue().getAvgMath();
				float math2 = o2.getValue().getAvgMath();
				int n = (int) (math2 - math1);
				return n;
			}
		});
		System.out.println("数学平均成绩由大到小的排序为:");
		for (Entry<String, Banji> mapping : list) {
			System.out.println(mapping.getValue().getClassName() + "的平均分:" + mapping.getValue().getAvgMath());
		}
	}

	/**
	 * 显示所有班级名称
	 */
	public void displayBanJiName() {	
		System.out.println("所有的班级名称为:");
		//所有key值存放到s,遍历输出
		Set<String>s=schoolMap.keySet();
		for(String ss:s){
			System.out.println(ss);
		}
	}
}
============================================================
import java.util.List;
import java.util.Scanner;
import java.lang.NullPointerException;

public class TestDemo {

	// 班级的测试方法
	public void testBanJi() {
		School school = new School();
		// banJiMenu();
		// 创建学生对象
		System.out.println("**创建学生对象**");
		Student student1 = new Student("s001", "mmm");
		Student student2 = new Student("s002", "www");
		Student student3 = new Student("s002", "www");
		Student student4 = new Student("s003", "www");
		Banji banji1 = new Banji("b01", "一班");
		Banji banji2 = new Banji("b02", "二班");
		// 实例化创建主学生列表
		System.out.println("**实例化创建主学生列表**");
		Banji mainBanji = new Banji("0", "主学生列表");
		school.addBanji(mainBanji);
		// 添加学生到主学生列表
		System.out.println("**添加学生到主学生列表**");
		mainBanji.addStudent(student1);
		mainBanji.addStudent(student2);
		mainBanji.addStudent(student4);
		// 添加重复学生到主学生列表
		System.out.println("**添加重复学生到主学生列表**");
		mainBanji.addStudent(student3);
		// 显示学生信息
		System.out.println("**显示学生信息**");
		mainBanji.displayAllStudent();

		// 通过学号查询学生在班级中是否存在
		System.out.println("**通过学号查询学生在班级中是否存在**");
		System.out.println(mainBanji.searchStudentByNum("s002"));
		System.out.println(mainBanji.searchStudentByNum("s003"));

		// 添加学生的语文成绩到对应学号
		System.out.println("**添加学生的语文成绩到对应学号**");
		mainBanji.insertChineseScore("s001", 100);
		mainBanji.insertChineseScore("s002", 90);
		mainBanji.insertChineseScore("s003", 90);
		mainBanji.insertChineseScore("s004", 90);
		mainBanji.displayAllStudent();

		// 添加学生的数学成绩到对应学号
		System.out.println("**添加学生的数学成绩到对应学号**");
		banji1.insertMathScore("s001", 90);
		banji2.insertMathScore("s002", 100);
		mainBanji.insertMathScore("s003", 90);
		mainBanji.insertMathScore("s004", 90);
		mainBanji.displayAllStudent();

		// 删除学生信息
		System.out.println("**删除学生信息**");
		mainBanji.deleteStudent("s003");
		mainBanji.displayAllStudent();

		// 向1班添加学生
		System.out.println("**向1班添加学生**");
		banji1.displayAllStudent();
		// System.out.println(mainBanji.getStuList().get(0));
		banji1.addStudent((Student) mainBanji.getStuList().get(0));
		banji1.displayAllStudent();

		// 向2班添加学生
		System.out.println("**向2班添加学生**");
		banji2.displayAllStudent();
		// System.out.println(mainBanji.getStuList().get(0));
		banji2.addStudent(student2);
		banji2.displayAllStudent();

		// 对各班语文成绩按平均分进行由大到小排序
		System.out.println("**对各班语文成绩按平均分进行由大到小排序**");
		school.sortChineseByAverage();
		System.out.println(mainBanji.getAvgChinese());
		System.out.println("	5--对各班数学成绩按平均分进行由大到小排序");
		school.sortMathByAverage();
		school.displayBanJiName();
	}

	// 学校的测试方法
	public void testSchool() {
		System.out.println("**实例化school**");
		School school = new School();

		System.out.println("**实例化班级**");
		Banji banji1 = new Banji("b01", "一班");
		Banji banji2 = new Banji("b02", "二班");
		Banji banji3 = new Banji("b03", "三班");
		Banji banji4 = new Banji("b03", "三班");
		Banji banji5 = new Banji("b02", "五班");

		System.out.println("**添加班级到school**");
		school.addBanji(banji1);
		school.addBanji(banji2);
		school.addBanji(banji3);
		school.addBanji(banji4);
		// school.addBanji(banji5);

		System.out.println("**显示所有添加成功的班级信息**");
		school.displayBanJiName();
		System.out.println("**测试查询方法**");
		System.out.println("查询方法测试" + school.searchByName("一班"));
		System.out.println("查询方法测试" + school.searchByName("二班"));
		if (school.searchByName("四班") == null) {
			System.out.println("未找到");
		} else {
			System.out.println(school.searchByName("四班"));
		}

		System.out.println("**测试删除方法(输入班级名称删除对应班级信息)**");
		school.deleteBanji(banji1);
		school.deleteBanji(banji5);

		System.out.println("**显示删除后的班级信息**");
		school.displayBanJiName();
	}

	// 主菜单
	public void mainMenu() {
		System.out.println("****************************");
		System.out.println("	**主菜单**");
		System.out.println("	1--班级管理");
		System.out.println("	2--学校管理");
		System.out.println("	0--退出");
		System.out.println("****************************");
		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("********************************************************");
		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("********************************************************");
		System.out.println("请输入对应数字进行班级列表管理");
	}

	// 主流程:
	public void test() {
		TestDemo td = new TestDemo();
		Scanner sc = new Scanner(System.in);
		int input = 0, input1 = 0, input2 = 0;
		School school = new School();
		Banji mainBanji = new Banji("0", "主学生列表");
		Banji banji =null;
		while (true) {
			td.mainMenu();
			input = sc.nextInt();
			if (input == 0) {
				break;
			}
			switch (input) {
			case 1:
				// 班级管理
				while (true) {
					banJiMenu();
					input1 = sc.nextInt();
					if (input1 == 9) {
						break;
					}
					switch (input1) {
					case 1:
						int i = 1;
						System.out.println("添加学生信息到主学生列表");
						System.out.println("请输入要添加的学生信息个数:");
						int stuNum = sc.nextInt();
						while (i <= stuNum) {
							System.out.println("请输入第" + i + "个学生信息");
							System.out.println("请输入学生id:");
							String stuId = sc.next();
							System.out.println("请输入学生姓名:");
							String stuName = sc.next();
							Student student = new Student(stuId, stuName);
							mainBanji.addStudent(student);
							// System.out.println("添加成功");
							i++;
						}
						System.out.println("主学生列表的学生信息为:");
						mainBanji.displayAllStudent();
						break;
					case 2:
						System.out.println("添加学生信息到普通班级");
						System.out.println("请输入要添加的班级名称");
						String className = sc.next();
						banji = school.searchByName(className);
						if (banji == null) {
							System.out.println("未查询到此班级");
						} else {
							System.out.println("请输入要添加学生个数");
							int count1 = sc.nextInt();
							for (int i1 = 1; i1 <= count1; i1++) {
								System.out.println("请输入第" + i1 + "个学生信息");
								System.out.println("请输入要添加的学生id:");
								String stuId = sc.next();
								// 判断id在主班级存不存在
								Student student = mainBanji.searchStudentByNum(stuId);
								if (student == null) {
									System.out.println("该学生信息在主学生列表中不存在,请输入学生的其他信息");
									System.out.println("请输入要添加的学生姓名");
									String stuName = sc.next();
									Student student1 = new Student(stuId, stuName);
									mainBanji.addStudent(student1);
									banji.addStudent(student1);
								} else {
									banji.addStudent(student);
								}
							}
							System.out.println("主学生列表:");
							mainBanji.displayAllStudent();
							System.out.println(banji.getClassName() + "班级列表");
							banji.displayAllStudent();
						}
						break;
					case 3:
						System.out.println("通过学号查询学生信息");
						System.out.println("请输入班级的名称");
						String cName = sc.next();
						Banji b = school.searchByName(cName);
						if (b == null) {
							System.out.println("该班级不存在");
						} else {
							System.out.println("请输入要查询的学生Id");
							String sId = sc.next();
							if (b.searchStudentByNum(sId) == null) {
								System.out.println("该学生信息在" + cName + "不存在");
							} else {
								System.out.println("学生信息:【学号:" + b.searchStudentByNum(sId).getStuNum() + ",姓名:"
										+ b.searchStudentByNum(sId).getStuName() + "】");
							}
						}
						break;
					case 4:
						System.out.println("输入班级的语文成绩");
						System.out.println("请输入班级的名称");
						String cName4 = sc.next();
						Banji b4 = school.searchByName(cName4);
						try {
							List<Student> stuList = b4.getStuList();
							if (stuList.isEmpty()) {
								System.out.println("还未添加学生信息");
							} else {
								for (Student s : stuList) {
									System.out.println("学生id:" + s.getStuNum() + ",学生姓名:" + s.getStuName());
									System.out.println("请输入学生语文成绩:");
									float f = sc.nextFloat();
									banji.insertChineseScore(s.getStuNum(), f);
								}
							}
						} catch (NullPointerException e) {
							System.out.println("该班级不存在");
						}
						break;
					case 5:
						System.out.println("输入班级的数学成绩");
						System.out.println("输入班级的数学成绩");
						System.out.println("请输入班级的名称");
						String cName5 = sc.next();
						Banji b5 = school.searchByName(cName5);
						try {
							List<Student> stuList1 = b5.getStuList();
							if (stuList1.isEmpty()) {
								System.out.println("还未添加学生信息");
							} else {
								for (Student s : stuList1) {
									System.out.println("学生id:" + s.getStuNum() + ",学生姓名:" + s.getStuName());
									System.out.println("请输入学生数学成绩:");
									float f = sc.nextFloat();
									banji.insertMathScore(s.getStuNum(), f);
								}
							}
						} catch (NullPointerException e) {
							System.out.println("该班级不存在");
						}
						break;
					case 6:
						System.out.println("删除学生信息");
						System.out.println("请输入班级的名称");
						String cName6 = sc.next();
						Banji b6 = school.searchByName(cName6);
						if (b6 == null) {
							System.out.println("该班级不存在");
						} else {
							System.out.println("请输入学生id:");
							String sc6 = sc.next();
							if (b6.searchStudentByNum(sc6) == null) {
								System.out.println("没有找到id:" + sc6 + "的学生信息");
							} else {
								banji.deleteStudent(sc6);
								System.out.println("删除成功");
							}
						}
						break;
					case 7:
						System.out.println("显示所有学生信息");
						System.out.println("请输入班级的名称");
						String cName1 = sc.next();
						Banji b1 = school.searchByName(cName1);
						if (b1 == null) {
							System.out.println("该班级不存在");
						} else {
							b1.displayAllStudent();
						}

						break;
					default:
						System.out.println("没有对应的操作");
						break;
					}

				}
				break;
			case 2:
				// 学校管理
				while (true) {
					schoolMenu();
					input2 = sc.nextInt();
					if (input2 == 9) {
						break;
					}
					switch (input2) {
					case 1:
						System.out.println("创建班级");
						System.out.println("请输入班级编号:");
						String classNum = sc.next();
						System.out.println("请输入班级名称:");
						String className = sc.next();
						//banji = new Banji(classNum, className);
						//Student addStudent=new Student();
						school.addBanji(new Banji(classNum, className));
						//school.addBanji(new Banji(classNum, className));
						break;
					case 2:
						System.out.println("删除班级");
						System.out.println("请输入班级名称");
						String deleteName = sc.next();
						if (school.searchByName(deleteName) == null) {
							System.out.println("该班级不存在");
						} else {
							school.deleteBanji(school.searchByName(deleteName));
						}
						break;
					case 3:
						System.out.println("通过班级名称查询班级信息");
						System.out.println("请输入班级名称");
						String searchName = sc.next();
						if (school.searchByName(searchName) == null) {
							System.out.println("该班级不存在");
						} else {
							System.out.println("班级信息:  [班级编号:" + school.searchByName(searchName).getClassId() + ",班级名称 "
									+ school.searchByName(searchName).getClassName() + "]");
						}
						break;
					case 4:
						if (school.getSchoolMap().keySet().isEmpty()) {
							System.out.println("还未创建班级");
						} else {
							System.out.println("对各班语文成绩按平均分进行由大到小排序");
							school.sortChineseByAverage();
						}
						break;
					case 5:
						if (school.getSchoolMap().keySet().isEmpty()) {
							System.out.println("还未创建班级");
						} else {
							System.out.println("对各班数学成绩按平均分进行由大到小排序");
							school.sortMathByAverage();
						}
						break;
					case 6:
						System.out.println("显示所有班级名称");
						school.displayBanJiName();
						break;
					default:
						System.out.println("没有对应操作");
						break;
					}
				}
				break;
			default:
				System.out.println("该数字没有对应的操作!");
				break;
			}
		}
	}
	public static void main(String[] args) {
		TestDemo td = new TestDemo();
		td.test();
//		td.testSchool();
//		td.testBanJi();

	}

}

老师我这个运行以后,从主学生列表添加信息到普通班级,添加一班后给二班添加成绩就会有问题,
添加二班学生后,给一班添加成绩就会有问题,。这是哪里出错了啊?还有就是我在eclipse上运行
测试代码的时候,输入中文老是会出问题,有办法解决不?是因为我输入法的问题吗?


正在回答 回答被采纳积分+1

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

4回答
好帮手慕阿园 2020-07-08 15:38:29

同学你好,老师测试并不会出现给第一个班级添加信息添加到第二个班级里面,如下

首先向主学生列表中添加学生,如下图

http://img1.sycdn.imooc.com//climg/5f0576a8099eb9ad04920731.jpg

添加学生之后,创建两个普通班级,如下图

http://img1.sycdn.imooc.com//climg/5f0577050967047803870333.jpg

http://img1.sycdn.imooc.com//climg/5f05773f09537faf03330251.jpg

添加学生到a班级

http://img1.sycdn.imooc.com//climg/5f05775109903a1503080269.jpg

向a班级中添加学生成绩

http://img1.sycdn.imooc.com//climg/5f05776b0958189102650303.jpg

查询结果,a班级的同学添加成功,并且成绩也添加成功

http://img1.sycdn.imooc.com//climg/5f0577880932c24905220169.jpg

此时查询第二个班级d,查询结果没有添加学生信息

http://img1.sycdn.imooc.com//climg/5f05779c0983f13504060171.jpg

向d班级添加学生后,运行效果如下

http://img1.sycdn.imooc.com//climg/5f0577ae097558aa05280162.jpg

添加成绩后

http://img1.sycdn.imooc.com//climg/5f0577c609fb8d0b05090158.jpg

并且主班级中有的学生添加到普通班级也是正常添加,如下图所示

http://img1.sycdn.imooc.com//climg/5f0577dd09c8799003100369.jpg

http://img1.sycdn.imooc.com//climg/5f0577e809dffdff03660389.jpg

祝学习愉快

好帮手慕阿园 2020-07-08 11:02:25

同学你好,上面同学的解释是正确的
同学的代码中,case4语句中,通过调用searchByName方法来查询输入的班级名称查询班级是否存在后,重新用班级对象去接收了,而调用添加成绩的使用使用的是最上面定义的班级,最上面的班级对象是null,所以会报找不到

http://img1.sycdn.imooc.com//climg/5f0536f0088dca9705540080.jpg

http://img1.sycdn.imooc.com//climg/5f0536f308f6e8f505540233.jpg


 修改建议如下:同学可以使用上面定义的班级对象去接收

http://img1.sycdn.imooc.com//climg/5f05371e096cbee005540298.jpg

或者同学也可以使用重新定义的b4去调用
2,不是同学输入法的问题,是eclipse编译器版本的问题,同学输入中文时将光标手动移到需要键盘输入的地方,如下

http://img1.sycdn.imooc.com//climg/5f05372e09ce39c502890163.jpg

祝学习愉快~


  • 提问者 对方正在说话 #1
    这样修改完,先添加学生到主学生列表,再创建两个班级,然后要给第一个班级添加学生信息的时候,会添加到第二个班级里
    2020-07-08 12:00:23
  • 提问者 对方正在说话 #2
    解决了,谢谢老师
    2020-07-08 15:37:02
慕丝1539783 2020-07-08 08:56:34
case 4:
    System.out.println("输入班级的语文成绩");
    System.out.println("请输入班级的名称");
    String cName4 = sc.next();
    Banji b4 = school.searchByName(cName4);
    try {
        List<Student> stuList = b4.getStuList();
        if (stuList.isEmpty()) {
            System.out.println("还未添加学生信息");
        } else {
            for (Student s : stuList) {
                System.out.println("学生id:" + s.getStuNum() + ",学生姓名:" + s.getStuName());
                System.out.println("请输入学生语文成绩:");
                float f = sc.nextFloat();
                banji.insertChineseScore(s.getStuNum(), f);
            }
        }
    } catch (NullPointerException e) {
        System.out.println("该班级不存在");
    }
    break;

根据输入班级名称获得了查询到的班级"b4"

Banji b4 = school.searchByName(cName4);

最后添加成绩的时候,又用的是"banji"?

banji.insertChineseScore(s.getStuNum(), f);

这边的"banji"应该是你其他case用到的,所以会显示学生不存在

改成

b4.insertChineseScore(s.getStuNum(), f);


  • 提问者 对方正在说话 #1
    好像不对诶大佬,我的普通班级是存在banji里的。这边的b4是用来获取学生ID和姓名的。我感觉是不是我添加学生到普通班级里哪里写错了
    2020-07-08 09:29:03
  • 慕丝1539783 回复 提问者 对方正在说话 #2
    你想一下,普通班级代表什么,代表的应该是名为"一班","二班"这样的班级实例对象,比如你要在"一班"下添加学生成绩,首先,你要先获得"一班"的实例对象,用这个实例对象,调用insertChineseScore()方法来添加学生成绩,既然你获得了"一班"实例对象b4,当然是用b4去调用这个方法。 整个case 4里,没有定义"banji",或者对"banji"赋值,不知道你这个"banji"从哪里来的。
    2020-07-08 09:42:06
  • 提问者 对方正在说话 #3
    解决了,感谢大佬
    2020-07-08 15:36:41
对方正在说话 提问者 2020-07-08 01:41:10

http://img1.sycdn.imooc.com//climg/5f04b3a40944398704900316.jpg

http://img1.sycdn.imooc.com//climg/5f04b3a409177dc408820301.jpg

补上两张问题图

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

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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