各位大佬看一个这个空指针异常怎么处理啊

本文介绍了一个使用Java实现的课程选择系统,详细展示了如何利用ArrayList进行课程添加、遍历及检查课程是否已存在。同时,系统还允许学生创建个人账号,选取感兴趣的课程,并展示所选课程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值