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

来源:5-2 学生选课---使用 Map 添加学生

Goldberg

2016-02-21 22:00

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没法执行。。怎么破


写回答 关注

1回答

  • 苏以
    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 的原因可能 有些不清晰 你可以去纸上面 画下图像 。谁包含谁 就 可以了 

    Goldbe... 回复Goldbe...

    在循环中mapList.put语句赋值后,m1的值并没有立刻改变,所以每次执行判断时 m1==null 导致永远不会执行else语句。等while语句结束,m1!=null

    2016-02-22 15:12:22

    共 2 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题