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

一直显示ID已被占用

http://img.mukewang.com/5f40847e0001443d01500264.jpg

package imooc_Map_ManageStudents;


import java.util.HashMap;

import java.util.Map;

import java.util.Scanner;


/**

 * 利用Map管理学生信息,实现增删改查的功能

 * @author john

 *m

 */

public class Test_Map{


public static void main(String[] args) {

Test_Map tm=new Test_Map();

tm.testPut();

}

//创建含有泛型的Map对象<key,value>

Map <String,Student> students ;

//利用构造方法初始化students

public Test_Map() {

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

}

/**

* 测试添加方法,从键盘输入ID,判断ID是否被占用,未被占用继续输入姓名,存入students中

*/

public void testPut(){

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

Scanner input=new Scanner(System.in);

//循环控制每次只能输入三个ID

int i=0;

String ID=input.next();//存放输入的ID

while(i<3) {

if(students.get(ID)==null) {

//输入的ID对应的value为空,提示输入学生姓名

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

String Name=input.next();

//创建一个新的Student对象

Student newStudent=new Student(ID,Name);

//利用HashMap的put方法,把Stu1放入students中

students.put(ID, newStudent);

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

i++;

}else {

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

continue;

}

}

}

}


提问者:qq_慕沐2454123 2020-08-22 10:36

个回答

  • 明月暖清风
    2020-12-01 09:56:30

    你的判断有问题,每次输入都是实例化一个新的对象,你的是保存了第一次输入的http://img3.mukewang.com/5fc5a2ce00017c0015001502.jpg

  • 慕神6168092
    2020-08-28 16:28:19

    应该把提示输入学生ID、接收从键盘输入的ID这两句代码放在while循环内。