public  String[][] getArray(ArrayList rs){
        rs = this.doExcel();
        String[][] excel_str=new String[rs.size()][]; //转换为二维数组
       try{
        for(int i=0;i<excel_str.length;i++){
            ArrayList temp=(ArrayList)rs.get(i);
            excel_str[i]=(String[])(temp.toArray(new String[0]));
        } 
       }catch(Exception e){
           System.err.println(e.getMessage());
        }
           return excel_str;
    } 
这是我写的一个方法,运行时可以得到ArrayList,是正确的结果,但是在执行到excel_str[i]=(String[])(temp.toArray(new String[0]));这行语句时,就有问题,catch到null,不知道为什么会这样,那位能指点一二,谢谢

解决方案 »

  1.   

    excel_str[i]=temp.toArray(new String[0]);
      

  2.   

    excel_str[i]=temp.toArray(new String[0]);
    这么用是不行的,会出现错误提示:type mismatch:cannot convert from Object[] to String[]
      

  3.   

    我是菜鸟,第一条语句就没看懂啊
    rs = this.doExcel();  rs是参数啊,他的值还没有使用就被覆盖了,要这个参数有啥意义啊?
      

  4.   

    ArrayList temp=(ArrayList)rs.get(i);  这个数组元素中还有数组啊
    不知道有没有为空的情况!
    要不就用这个
    excel_str[i]=(String[])(temp.toArray());
      

  5.   

    excel_str[i]=(String[])(temp.toArray());这个就更不行了,
    excel_str[i]=temp.toArray(new String[0]);这个用法是没有错误的,先前我已经用过,没有问题,只不过现在我要操作excel文件,将数据存储到一个ArrayList后,转换成数组就有问题,不知和解,但如果是将一个结果集存入ArrayList后,用同样的方法是没有问题的
      

  6.   

    你的ArrayList里存的是object型的数据把 转为object[][]应该可以
      

  7.   

    一维的:
            String[] temp = (String[])rs.toArray(new String[rs.size()]);自己在变一变吧
      

  8.   

    首先,对于rs = this.doExcel();这句是有问题的,你的rs是参数,这样做就没有了参数的意义,我想你是要把doExcel();的结果传进来应该在外部调用getArray(doExcel()),在函数内部就可以直接使用rs了;
    第二, excel_str[i]=(String[])(temp.toArray(new String[0]));String[]是数组的声明方法,不能这样的转换,应该老老实实的
    String[] array;
    for(int j = 0 ; j < temp.size();j++)
    {
      array[j] = (String)temp.get(j);
    }
    这样array就是你要的数据了
    第三,如果你想用toArray()方法,那应该声明一个Object[]数组,然后逐一的转换成String类型;(这个你应该会,我就不写了)
    第四,如果你想用toArray(Object[] a)方法,应该这样:
    Object[] array;
    excel_str[i]=temp.toArray(array);
    这样array就是你要的数据,并且重复第三步
      

  9.   

    先确定下面取出的值会不会是null.
    ArrayList temp=(ArrayList)rs.get(i); // i --> 0 ~ excel_str.length
    System.out.println("rs.get("+i")=" + temp);
      

  10.   

    System.out.println("rs.get("+i")=" + temp);
    没有null的,是正确的结果
      

  11.   

    String[][] excel_str=new String[rs.size()][]; //转换为二维数组
    ------String[][] excel_str=new String[rs.size()][10000]; //转换为二维数组