String[] arr = (String[]) map.get("a");
有什么错误?为什么出现异常

解决方案 »

  1.   

    没头没尾的
    你要做什么
    map里面"a"位置放的是String[]吗?
      

  2.   

    我把2个类都贴上,大家研究下:
    public class BiaoOne {
    String zuhao;
    String qingqiuleixing;
    int    xuhao;
    int    zixuhao;
    String biaozhun;
    String guishu;
    String xunhuan;
    int xunhuanxianggeshu;

    BiaoOne(){

    }

    BiaoOne(String s1, String s2, int i1, int i2, String s3,
    String s4, String s5, int i3){
    this.zuhao = s1;
    this.qingqiuleixing = s2;
    this.xuhao = i1;
    this.zixuhao = i2;
    this.biaozhun = s3;
    this.guishu = s4;
    this.xunhuan = s5;
    this.xunhuanxianggeshu = i3;
    } public String getBiaozhun() {
    return biaozhun;
    } public void setBiaozhun(String biaozhun) {
    this.biaozhun = biaozhun;
    } public String getGuishu() {
    return guishu;
    } public void setGuishu(String guishu) {
    this.guishu = guishu;
    } public String getQingqiuleixing() {
    return qingqiuleixing;
    } public void setQingqiuleixing(String qingqiuleixing) {
    this.qingqiuleixing = qingqiuleixing;
    } public int getXuhao() {
    return xuhao;
    } public void setXuhao(int xuhao) {
    this.xuhao = xuhao;
    } public String getXunhuan() {
    return xunhuan;
    } public void setXunhuan(String xunhuan) {
    this.xunhuan = xunhuan;
    } public int getXunhuanxianggeshu() {
    return xunhuanxianggeshu;
    } public void setXunhuanxianggeshu(int xunhuanxianggeshu) {
    this.xunhuanxianggeshu = xunhuanxianggeshu;
    } public int getZixuhao() {
    return zixuhao;
    } public void setZixuhao(int zixuhao) {
    this.zixuhao = zixuhao;
    } public String getZuhao() {
    return zuhao;
    } public void setZuhao(String zuhao) {
    this.zuhao = zuhao;
    }


    }///////////////////////////////////////////////////////////////////////////////////
    import java.util.Map;
    import java.util.TreeMap;
    import java.util.ArrayList;
    import java.util.Iterator;public class Test1 {
    Map map = new TreeMap();
    Test1()
    {
    map.put("package.head.requesttype","001");
    map.put("package.head.user","PICC");
    map.put("package.head.code","12345678");
    map.put("package.body.policyno","00PICC1234567890");
    map.put("package.body.startdate","20070101");
    map.put("package.body.insured","张三");
    map.put("package.third.driverlist.driver.name","李1");
    map.put("package.third.driverlist.driver.age","20");
    map.put("package.third.driverlist.driver.name","李2");
    map.put("package.third.driverlist.driver.age","21");
    map.put("package.third.driverlist.driver.name","李3");
    map.put("package.third.driverlist.driver.age","22");
    map.put("package.third.date","19990909");
    }

    public String adapter(Map map)
    {
    ArrayList arraylist = new ArrayList();
    BiaoOne biao1 = new BiaoOne("1","7000",1,0,"package.head.requesttype","head","n",0);
    arraylist.add(biao1);
    BiaoOne biao2 = new BiaoOne("1","7000",2,0,"package.head.user","head","n",0);
    arraylist.add(biao2);
    BiaoOne biao3 = new BiaoOne("1","7000",3,0,"package.head.code","head","n",0);
    arraylist.add(biao3);
    BiaoOne biao4 = new BiaoOne("1","7000",4,0,"package.body.policyno","body","n",0);
    arraylist.add(biao4);
    BiaoOne biao5 = new BiaoOne("1","7000",5,0,"package.body.startdate","body","n",0);
    arraylist.add(biao5);
    BiaoOne biao6 = new BiaoOne("1","7000",6,0,"package.body.insured","body","n",0);
    arraylist.add(biao6);
    BiaoOne biao7 = new BiaoOne("1","7000",7,0,"package.third.driverlist.driver","","y",2);
    arraylist.add(biao7);
    BiaoOne biao8 = new BiaoOne("1","7000",7,1,"package.third.driverlist.driver.name","","n",0);
    arraylist.add(biao8);
    BiaoOne biao9 = new BiaoOne("1","7000",7,2,"package.third.driverlist.driver.age","","n",0);
    arraylist.add(biao9);
    BiaoOne biao10 = new BiaoOne("1","7000",8,0,"package.third.date","third","n",0);
    arraylist.add(biao10);
    BiaoOne biao = new BiaoOne();
    String outstr = "";                                      //最后返回的字符串
    int where = 0;                                           //解码方案:0字符串 1非标准XML 2标准XML
    if(where == 0){

    Iterator iterator = arraylist.iterator();
    while (iterator.hasNext()) {                    //遍历
    biao = (BiaoOne) iterator.next();
    if (biao.xunhuan.equalsIgnoreCase("n")) {        //非循环项
    outstr = outstr + (String)(map.get(biao.getBiaozhun()) + "|");

    else {                                          //循环项
    int number = biao.getXunhuanxianggeshu();   //循环项个数
    String[] bigarr = new String[100];          //定义一个临时大数组用来拼接循环项
    String[] arrValue = null;                   //转载循环字段的多个值
    for (int i = 0; i < number; i++) {          //将循环字段的值按一定顺序提出放到大数组中
    biao = (BiaoOne) iterator.next();
    arrValue = (String[]) (map.get(biao.getBiaozhun()));         for (int j = 0; j < arrValue.length; j++) {
             bigarr[j * number + 1] = arrValue[j];
            }
    }
    for (int i = 0; i < bigarr.length; i++) {
    outstr = outstr + bigarr[i];
    }
    }
    }//whlie

    }//if
    System.out.println(outstr);
    return "";
    } public static void main(String[] args) {
    Test1 test1 = new Test1();
    test1.adapter(test1.map);
    }
    }
      

  3.   

    Iterator iterator = arraylist.iterator();
                    while (iterator.hasNext()) {                    //遍历
                    biao = (BiaoOne) iterator.next();
                    if (biao.xunhuan.equalsIgnoreCase("n")) {        //非循环项
                        outstr = outstr + (String)(map.get(biao.getBiaozhun()) + "|");
                    } 
                    else {                                          //循环项
                        int number = biao.getXunhuanxianggeshu();   //循环项个数
                        String[] bigarr = new String[100];          //定义一个临时大数组用来拼接循环项
                        String[] arrValue = new String[number];                   //转载循环字段的多个值
                        for (int i = 0; i < number; i++) {          //将循环字段的值按一定顺序提出放到大数组中
                            biao = (BiaoOne) iterator.next();
                            arrValue[i] = (String) (map.get(biao.getBiaozhun()));                        for (int j = 0; j < arrValue.length; j++) {
                                bigarr[j * number + 1] = arrValue[j];
                            }
                        }
                        for (int i = 0; i < bigarr.length; i++) {
                            outstr = outstr + bigarr[i];
                        }
                    }
                }//whlie这样修改一下,就可以跑通了。至于具体的细节。我也没时间,今天周末,我要回家了。
      

  4.   

    你的错误在于 : (map.get(biao.getBiaozhun()));里面 的对象是 String, 而不是 String[]
    .
      

  5.   

    汗 没看你贴得那么多代码 
    不过可以肯定你问题不是出在你说的这句话
    我的测试代码
    Map map=new HashMap();
    String t[]={"1","2"};
    map.put( "a",t);
    String[] arr = (String[]) map.get("a");
    System.out.println(arr[1]);
    一切ok如果说出错的话就是你map.put的时候没有放入一个数组 导致cast错误
    接分
      

  6.   


    lz呀lz,本来我可以拿分的,结果......我都问你了“map里面"a"位置放的是String[]吗?”
    你也回答了“是string,怎么会是[]呢?”怎么还要给别人分呢?
      

  7.   

    听说有100分 哈哈 
    下面我的分析首先取出这个("1","7000",7,0,"package.third.driverlist.driver","","y",2);xunhuan=y所以进入else块然后取下面一个信息("1","7000",7,1,"package.third.driverlist.driver.name","","n",0);通过package.third.driverlist.driver.name去取map里的值map里有3个相关值
    map.put("package.third.driverlist.driver.name","李1");
    map.put("package.third.driverlist.driver.name","李2");
    map.put("package.third.driverlist.driver.name","李3");map是key value 
    而key是一个set set不能重复你map.size测试下是9而不是14
      

  8.   

    你这个程序2个错误
    1,map设计错误 照你的意思容器不能是map
    2,map对应值错误是string而不是String[]解决方案
    map.put("package.third.driverlist.driver.name","李1");
    map.put("package.third.driverlist.driver.name","李2");
    map.put("package.third.driverlist.driver.name","李3");
    改称
    map.put("package.third.driverlist.driver.name",{"李1","李1","李1"});
      

  9.   

    问题解决了,这个MAP不是我写的,里面有一定的问题,另外取出来的确实是一个字符串数组.谢谢大家 给出代码的多给分.我再建个100分的帖子给分.
      

  10.   

    请到http://community.csdn.net/Expert/topic/5212/5212881.xml?temp=.3915064
    留言我给大家分