A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜光 高级黑马   /  2013-5-30 10:54  /  1200 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜光 于 2013-5-31 07:48 编辑
  1. import java.util.*;

  2. class MapDemo4
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 HashMap<String,HashMap<String,String>> czbk = new HashMap<String,HashMap<String,String>>();

  7.                 HashMap<String,String> yure = new HashMap<String,String>();

  8.                 HashMap<String,String> jiuye = new HashMap<String,String>();

  9.                 yure.put("01","zhangsan");
  10.                 yure.put("02","lisi");

  11.                 jiuye.put("01","wangwu");
  12.                 jiuye.put("02","zhaoliu");

  13.                 czbk.put("01",yure);
  14.                 czbk.put("02",jiuye);
  15.                
  16.                 Iterator<String> it = czbk.keySet().iterator();
  17.                 while(it.hasNext())
  18.                 {
  19.                         String roomname = it.next();
  20.                         HashMap<String,String> room = czbk.get(roomname);
  21.                         getInof(roomname);

  22.                 }

  23.         }

  24.         public static void getInof(HashMap<String,String> T)
  25.         {
  26.                 Iterator<String> it = T.keySet().iterator();

  27.                 while(it.hasNext())
  28.                 {
  29.                         String id = it.next();
  30.                         String name = T.get(id);
  31.                         System.out.println(id+"..."+name);
  32.                 }
  33.         }
  34. }
复制代码
MapDemo4.java:27: 错误: 无法将类 MapDemo4中的方法 getInof应用到给定类型;
                        getInof(roomname);
                        ^
  需要: HashMap<String,String>
  找到: String
  原因: 无法通过方法调用转换将实际参数String转换为HashMap<String,String>


编译报错,不是很明白,为什么非要
HashMap<String,String> room = czbk.get(roomname);
getInof(room);

这样调用才行呢?

System.out.println(roomname); 和 getInof(yure);应该传的参数是一样的啊!不解


评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

6 个回复

倒序浏览
你的getInof(HashMap<String,String> T)  需要的参数是hashmap集合,你的   roomname 是 String类型,你把它 传给 getInof(roomname)当然报错了!

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

回复 使用道具 举报
于腾飛 发表于 2013-5-30 11:09
你的getInof(HashMap T)  需要的参数是hashmap集合,你的   roomname 是 String类型,你把它 传给 getInof( ...
  1. while(it.hasNext())
  2.                 {
  3.                         String roomname = it.next();
  4.                         HashMap<String,String> room = czbk.get(roomname);
  5.                         getInof(roomname);

  6.                 }
复制代码
那上面这段我直接写成为什么还不可以?:
  1. while(it.hasNext())
  2.                 {
  3.                         HashMap<String,String> roomname = it.next();
  4.                         
  5.                         getInof(roomname);

  6.                 }
复制代码
回复 使用道具 举报
杜光 发表于 2013-5-30 11:20
那上面这段我直接写成为什么还不可以?:

楼主是气疯了吧,你迭代出来的KEY是String,你赋值给一个HASHMAP,能行嘛!
回复 使用道具 举报
杜光 发表于 2013-5-30 11:20
那上面这段我直接写成为什么还不可以?:

报错的时候注意下哪里报错,报错的原因是什么!都有提示的
回复 使用道具 举报
一个是String ,一个是Hashmap;HashMap里面的键值对类型是String,就是说可以将String类型的的键值对放入HashMap;但容器类型还是HashMap.....
回复 使用道具 举报
如果问题以解决,请结贴,未解决追加提问。谢谢合作
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马