MapTest中putTest()方法这句/*StudentCls stu=students.get(ID);*/报空指针异常,求解!!!

import java.util.HashSet;
import java.util.Set;

/**
 * 学生类
 * @author Administrator
 *
 */
public class StudentCls {
	public String name;
	public String id;
	
//	public Set<CourseCls> couSet;
	public StudentCls(String name,String id){
		this.name=name;
		this.id=id;
//		this.couSet=new HashSet<CourseCls>();
	}
}



import java.util.*;

public class MapTest {
	
	public Map<String, StudentCls> students;
	
	public void putTest(){
		Scanner sca=new Scanner(System.in);
		int i=0;
		while(i<3){
			System.out.println("请输入学生ID");
			String ID=sca.next();
			StudentCls stu=students.get(ID);
			if(stu==null){
				System.out.println("请输入学生姓名:");
				String name=sca.nextLine();
				StudentCls newstu=new StudentCls(name, ID);
				students.put(ID, newstu);
				System.out.println("成功添加学生"+students.get(ID).name);
				i++;
			}
			else{
				System.out.println("已有该学生!");
			}
		}
	}
	
	public void ketSet(){
		Set<String> keyset=students.keySet();
		System.out.println("总共有"+keyset.size()+"个学生");
		for(String id:keyset){
			StudentCls stu=students.get(id);
			if(stu!=null){
				System.out.println("学生:"+stu.name);
			}
			
		}
	}
	
	
	public static void main(String[] args) {
		MapTest mt=new MapTest();
		mt.putTest();
		mt.ketSet();
	}
}


_坐看云起时
浏览 1706回答 1
1回答

guozhchun

students 只是声明了并没有定义,其是一个null,因此在调用students.get(ID)时会报错。可以定义一个构造函数给students赋值,也可以直接在声明时定义:public Map<String, StudentCls> students = new HashMap<String, StudentCls>();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java