public void testSetContains(){ System.out.println("请输入学生已选的课程名称:"); String name = console.next(); Course course2 = new Course(); course2.name = name; System.out.println("新创建课程:"+course2.name); System.out.println("备选课程中是否包含课程:"+course2.name+","+ student.courses.contains(course2)); } public static void main(String[]args){ SetTest st = new SetTest(); st.testAdd(); // st.testListContains(); st.testForEach(); st.createStudentAndSelectCours(); st.testSetContains();
下面是报的错误
有如下课程待选(通过for each方法访问):
课程:2:C语言
课程:1:数据结构
课程:5:高等数学
课程:6:大学英语
课程:3:离散数学
课程:4:汇编语言
欢迎学生:小明选课!
请输入课程ID
1
请输入课程ID
6
请输入课程ID
4
请输入学生已选的课程名称:
大学英语
Exception in thread "main" java.lang.NullPointerException
at com_imooc_collection.SetTest.testSetContains(SetTest.java:129)
at com_imooc_collection.SetTest.main(SetTest.java:139)
新创建课程:大学英语
Process finished with exit code 1
从你给出的代码 没有什么问题。。如果是报NullPointerException的错误是很有可能你在实例化student的时候没有给student的courses初始化。。。你看一下你的courses有没有被初始化
将这里的Student 对象的引用删除就行了,因为Student已经成为了成员变量
public void createStudentAndSelectCours(){ //创建一个学生对象 = new Student("1","小明"); System.out.println("欢迎学生:" + student.name + "选课!"); //创建一个Scanner对象,用来接收从键盘输入的课程ID Scanner console = new Scanner(System.in); 你看一下是不是加粗字体这里写成了Student student
我的也是这样,一脸疑惑