慕莱坞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();
}
}
下面是错误截图:
你将开头map构造方法中的void去掉就可以了,构造方法是不能加void的
,代码太长,没看,错误的提示就是你在31行和64行用一个null对象调用了它的某一个方法,看看是不是对象弄错了
Java入门第三季
409769 学习 · 4543 问题
相似问题