问答详情
源自:5-2 学生选课---使用 Map 添加学生

为什么两个不同地方的students.get(ID),一个可以直接用创建的对象st来代替,另一个却不可以用st代替?

public void testPut() {

// 创建一个Scanner对象,用来获取输入的学生ID和姓名

Scanner console = new Scanner(System.in);

int i = 0;

while (i < 3) {

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

String ID = console.next();

// 判断该ID是否被占用

Student st = students.get(ID);

if (st == null) {

// 提示输入学生姓名

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

String name1 = console.next();

// 创建新的学生对象

Student newStudent = new Student(ID, name1);

// 通过调用students的put方法,添加ID-学生映射

students.put(ID, newStudent);

System.out.println("成功添加学生:" +students.get(ID).name+"\n");                 //为什么这里的students.get(ID)不可以用st代替?

i++;

} else {

System.out.println("该学生ID已被占用!");

continue;

}

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

public void testKeySet() {

// 通过keySet方法,返回Map中的所有“键”的Set集合

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

// 取得students的容量

System.out.println("\n"+"总共有:" + students.size() + "个学生!");

// 遍历keySet,取得每一个键,再调用get方法取得每个键对应的value

for (String stuId : keySet) {

Student st = students.get(stuId);

if (st != null)

System.out.println("学生:" + st.name);                                                     //为什么这里的students.get(ID)又可以用st代替?

}

}


提问者:时代花园 2018-09-16 16:20

个回答

  • 时代花园
    2018-09-16 17:15:19

    好吧,我好像已经明白了