代码和老师一样,为什么到Student st = students.get(ID);这一步就不能执行啦?

来源:5-2 学生选课---使用 Map 添加学生

慕莱坞8031794

2016-04-05 16:00

package com.imooc.cellection;


import java.util.HashMap;

import java.util.Map;

import java.util.Scanner;

import java.util.Set;


public class TestMap {

//用来承装学生类型的对象

public Map<String,Student> students;

//构造方法对students实例化

public void testMap(){

this.students = new HashMap<String,Student>();

}

/*

* 测试添加:输入学生ID,判断是否被占用,

* 若未被占用,则输入学生姓名,创建新的学生对象,并且添加到students中

* @param args

*/

public void testPut(){

//创建Scanner对象,获取学生的ID和姓名

Scanner con = new Scanner(System.in); 

int i=0;

while(i<3){

System.out.println("请输入学生的ID:");

String ID = con.next();

//判断学生的ID是否被占用

Student st = students.get(ID);

if(st==null){

System.out.println("请输入学生姓名:");

String name = con.next();

//创建一个新的学生对象来接受输入的ID和name

Student newStudent = new Student(ID, name);

//把ID和新创建的学生对象(前面定义了students中value只能存放student类型的)添加到students中去

students.put(ID, newStudent);

System.out.println("成功添加学生:"+students.get(ID).name);

i++;

}else{

System.out.println("学生已存在!");

continue;

}

}

}

public void testKeySet(){

System.out.println("一共添加"+students.size()+"个学生!");

//调用Map的KeySet()方法,获取Map中"键"的集合

Set<String> KeySet = students.keySet();

//遍历KeySet()方法取得每一个键,再调用get()方法取得每一个key所对应的value

for (String studentID : KeySet) {

Student st = students.get(studentID);

if(st != null){

System.out.println("学生:"+st.name);

}

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

TestMap tm = new TestMap();

tm.testPut();

tm.testKeySet();

}


}

下面是错误截图:

http://img.mukewang.com/5703706300017ae605860172.jpg

写回答 关注

2回答

  • 七夕海堂
    2016-04-06 16:34:11
    已采纳

    你将开头map构造方法中的void去掉就可以了,构造方法是不能加void的

    慕莱坞803...

    非常感谢!确实是这样的

    2016-04-06 20:45:04

    共 1 条回复 >

  • 迩丶眼眸里
    2016-04-05 16:34:46

    ,代码太长,没看,错误的提示就是你在31行和64行用一个null对象调用了它的某一个方法,看看是不是对象弄错了

    慕莱坞803...

    不知道什么原因 你的意思是TestMap tm = new TestMap();的问题吗

    2016-04-05 16:58:17

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409769 学习 · 4543 问题

查看课程

相似问题