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

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


正在回答

1 回答

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

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

Goldberg 提问者

这个程序可以运行,并得出结果。只是不能判断是否重名 因为在循环中mapList.put赋值后 m1的值并没有立刻改变 而是等循环结束后才会执行赋值 这个要怎么解决啊?
2016-02-22 回复 有任何疑惑可以回复我~
#2

Goldberg 提问者 回复 Goldberg 提问者

在循环中mapList.put语句赋值后,m1的值并没有立刻改变,所以每次执行判断时 m1==null 导致永远不会执行else语句。等while语句结束,m1!=null
2016-02-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

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