老师好 哪里错了呀
来源:4-8 项目作业
衮雪TripleRock
2019-11-15 11:58:13
package com.imooc.student;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class School {
Map<String,Banji> BanjiMap;//存放班级的集合
//构造方法
public School() {
BanjiMap=new HashMap<String,Banji>();
}
/**
* 添加班级
* @param banji
*/
public void addBanji(Banji banji){
//班级编号作为key值
BanjiMap.put(banji.getClassName(),banji);
}
/**
* 删除班级
* @param banji
*/
public void deleteBanji(Banji banji){
BanjiMap.remove(banji.getClassId());
System.out.println("删除成功!");
}
/**
* 通过班级名称查询班级
* @param className
* @return
*/
public Banji searchByName(String className) {
Banji banji=null;
Set<String> BanjiSet=BanjiMap.keySet();
for(String s:BanjiSet) {
if(s.equals(BanjiSet)) {
banji=BanjiMap.get(s);
break;
}
}
return banji;
}
/**
* 对各班语文成绩按平均分进行由大到小排序
*/
public void sortChineseByAverage() {
}
/**
* 对各班数学成绩按平均分进行由大到小排序
*/
public void sortMathByAverage() {}
/**
* 显示所有班级名称
*/
public void displayBanJiName() {
Set<String> BanjiSet=BanjiMap.keySet();
System.out.println("播放列表名称为:");
for(String s:BanjiSet) {
System.out.println(s);
}
}
public Map<String, Banji> getBanjiMap() {
return BanjiMap;
}
public void setBanjiMap(Map<String, Banji> banjiMap) {
BanjiMap = banjiMap;
}
}
//学校的测试方法
public void testSchool(){
Student stu1=new Student("s001","张三",90,100);
Student stu2=new Student("s002","李四",100,90);
Student stu3=new Student("s003","王五",110,80);
//创建班级
Banji mainBanji=new Banji("b001","班级1");
//将学生添加进班级中
mainBanji.addStudent(stu1);
mainBanji.addStudent(stu2);
System.out.print("b001");
mainBanji.displayAllStudent();
//定义一个新的班级列表
Banji favouriteBanji=new Banji("b002","班级2");
//将学生添加进班级中
favouriteBanji.addStudent(stu3);
favouriteBanji.addStudent(stu2);
System.out.print("b002");
favouriteBanji.displayAllStudent();
//将两个班级添加到班级集合中
School sch=new School();
sch.addBanji(mainBanji);
sch.addBanji(favouriteBanji);
sch.displayBanJiName();
//根据班级列表名字查询班级列表信息,并显示所有学生
Banji banji=sch.searchByName("班级2");
banji.displayAllStudent();

1回答
好帮手慕阿满
2019-11-15
同学你好,报错提示在TestDemo类的181行,

181行应该是指如下,

这里应该是searchByName("班级2")查询出的banji为null,使用null调用displayAllStudent()报空指针异常。
在searchByName()方法中,equals应该比较的是className,而不是BanjiSet。

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