package collection_map;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class SetTest {
public List<Course> coursesToSelect;
private Scanner console;
public Student student;
public SetTest() {
coursesToSelect = new ArrayList();
Scanner console = new Scanner(System.in);
}
public void testAdd() {
Course cr1 = new Course("1","数据结构");
coursesToSelect.add(cr1);
Course temp = (Course) coursesToSelect.get(0);
System.out.println("添加了课程:"+temp.getId()+":"+temp.getName());
coursesToSelect.add(cr1);
Course temp0 = (Course) coursesToSelect.get(0);
System.out.println("添加了课程:"+temp0.getId()+":"+temp0.getName());
Course cr2 = new Course("2","C语言");
coursesToSelect.add(0, cr2);
Course temp2 = (Course) coursesToSelect.get(0);
System.out.println("添加了课程:"+temp2.getId()+":"+temp2.getName());
Course [] course = {new Course("3","离散数学"),new Course("4","大学语文")};
coursesToSelect.addAll(Arrays.asList(course));
Course temp3 = (Course) coursesToSelect.get(2);
Course temp4 = (Course) coursesToSelect.get(3);
System.out.println("添加了课程:"+temp3.getId()+":"+temp3.getName()
+";"+temp4.getId()+":"+temp4.getName());
Course [] course2 = {new Course("5","高等数学"),new Course("6","汇编语言")};
coursesToSelect.addAll(2, Arrays.asList(course2));
Course temp5 = (Course) coursesToSelect.get(2);
Course temp6 = (Course) coursesToSelect.get(3);
System.out.println("添加了课程:"+temp5.getId()+":"+temp5.getName()
+";"+temp6.getId()+":"+temp6.getName());
}
public void testForEach() {
System.out.println("有如下课程待选(通过foreach访问):");
for(Object obj:coursesToSelect) {
Course cr = (Course)obj;
System.out.println("课程:"+cr.getId()+":"+cr.getName());
}
}
/**
* 测试List的contains方法
*
*/
public void testListContains() {
//取得备选课程的第0个元素
Course course = coursesToSelect.get(0);
//打印输出courseToSelect是否包含course对象
System.out.println("取得课程:"+course.getName());
System.out.println("备选课程是否包含:"+course.getName()+","+
coursesToSelect.contains(course));
//提示输入课程名称
System.out.println("请输入课程名称:");
String name = console.next();
//String name = console.next();
//新创建一个课程对象,ID和名称,与course对象完全一样
Course course2 = new Course();
course2.setName(name) ;
//Course course2 = new Course(course.getId(),course.getName());
System.out.println("新创建课程:"+course2.getName());
System.out.println("备选课程是否包含:"+course2.getName()
+ ","+coursesToSelect.contains(course2));
}
/**
* 创建学生对象并选课
*/
public void create() {
//创建一个学生对象
Student student = new Student("1", "小明");
System.out.println("欢迎学生:"+student.getName()+"选课!");
//创建一个Scanner对象,用来接收从键盘输入的课程ID
Scanner co = new Scanner(System.in);
for(int i = 0;i<3;i++) {
System.out.println("请输入课程ID:");
String courseId = co.next();
for(Course cr:coursesToSelect) {
if(cr.getId().equals(courseId)) {
student.coures.add(cr);
student.coures.add(null);
}
}
}
//打印输出,学生所选课程
//st.testForEachForSet(student);
}
public void testForEachForSet(Student student) {
System.out.println("共选择了:"+student.coures.size()+"门课程!");
for(Course cr:student.coures) {
System.out.println("选择了课程:"+cr.getId()+":"+cr.getName());
}
}
}
System.out.println("请输入课程名称:");
String name = console.next();
//新创建一个课程对象,ID和名称,与course对象完全一样
Course course2 = new Course();
course2.setName(name) ;
就是这一块报错,这个赋值有问题吗?
下边是运行结果
取得课程:C语言
备选课程是否包含:C语言,true
请输入课程名称:
Exception in thread “main” java.lang.NullPointerException
at collection_map.SetTest.testListContains(SetTest.java:79)
at collection_map.SetTest.main(SetTest.java:136)