为了账号安全,请及时绑定邮箱和手机立即绑定

为什么两个不同地方的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代替?

}

}


正在回答

1 回答

好吧,我好像已经明白了

0 回复 有任何疑惑可以回复我~
#1

甲鱼要学习

我也想问为什么 求解啊
2019-02-24 回复 有任何疑惑可以回复我~
#2

拆鸡 回复 甲鱼要学习

加一!
2019-08-06 回复 有任何疑惑可以回复我~
#3

甲鱼要学习 回复 拆鸡

后面那个用的foreach方法所以可以用st代替;而前面添加的时候是每次插入,因此需要指定id值对应的姓名。 foreach类似for循环,省略了i值的循环
2019-10-28 回复 有任何疑惑可以回复我~
#4

慕姐0546128 回复 拆鸡

一个是Student的引用变量st,一个是具有泛型<String,Student>的Map集合,名称叫students,两个不是一个东西啦。而且students算是一个全局变量;在方法里的Student的引用变量st算是局部变量,这个局部变量只在该方法有用。
2020-02-03 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信