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

mapList.put(input,new Course(input,n1)); 为何无法赋值

int i = 0;
  while(i<3){
   System.out.println("请输入ID");
   Integer input = Input.nextInt();   //接受输入内容  导入过了
   Course m1 = mapList.get(Input);
   //System.out.println(m1);              //这里m1为null
   if(m1==null){
    System.out.println("请输入姓名");
    String n1 = Input.next();
    mapList.put(input,new Course(input,n1));
    //System.out.println(m1);         //这里m1依旧为null
  i++;
   }
   else{
    System.out.println("ID被占用");
    continue;
   }

程序可以执行。。。问题是:直到循环结束后m1才有值  导致else没法执行。。怎么破


提问者:Goldberg 2016-02-21 22:00

个回答

  • 苏以
    2016-02-22 13:35:14

    1.请输入ID 你为什么用 Integer 接受 为什么不用 String s = input.next();  你的问题 你没有 给全部代码 我也不太清晰 初步认为 是mapList.get()是接受String 类型 ,你传进去的是integer类型 

    2.还有下面mapList.put()无法赋值 这里 你想要创建 Course 实例 : Course cur = new Course(Input , n1);

    在 把 ID 和 Course 放入 mapList里面  ID 为key , Course 为value 。 mapList.put(ID ,Course);

    这是 两层包装 。Course 类 里面 有属性 ID 和 name .  Map中包含 key,value 为 ID ,Course.   

    第一个 我只是感觉 你 哪里 出现问题 ,不太准确 。 第二个 是map包含 东西 , 因为ID 的原因可能 有些不清晰 你可以去纸上面 画下图像 。谁包含谁 就 可以了