ArrayList转换为二维数组有问题,请指点
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,不知道为什么会这样,那位能指点一二,谢谢
问题点数:100、回复次数:14Top
1 楼bevin1010(木瓜)回复于 2006-02-09 10:47:10 得分 0
excel_str[i]=temp.toArray(new String[0]);Top
2 楼xhust2000(xhust2000)回复于 2006-02-09 11:10:20 得分 0
excel_str[i]=temp.toArray(new String[0]);
这么用是不行的,会出现错误提示:type mismatch:cannot convert from Object[] to String[]Top
3 楼andycpp(幻瞳)回复于 2006-02-09 11:19:32 得分 0
我是菜鸟,第一条语句就没看懂啊
rs = this.doExcel(); rs是参数啊,他的值还没有使用就被覆盖了,要这个参数有啥意义啊?Top
4 楼bevin1010(木瓜)回复于 2006-02-09 11:33:28 得分 0
ArrayList temp=(ArrayList)rs.get(i); 这个数组元素中还有数组啊
不知道有没有为空的情况!
要不就用这个
excel_str[i]=(String[])(temp.toArray());
Top
5 楼xhust2000(xhust2000)回复于 2006-02-09 11:37:22 得分 0
excel_str[i]=(String[])(temp.toArray());这个就更不行了,
excel_str[i]=temp.toArray(new String[0]);这个用法是没有错误的,先前我已经用过,没有问题,只不过现在我要操作excel文件,将数据存储到一个ArrayList后,转换成数组就有问题,不知和解,但如果是将一个结果集存入ArrayList后,用同样的方法是没有问题的Top
6 楼piaopiao11()回复于 2006-02-09 11:56:58 得分 0
你的ArrayList里存的是object型的数据把 转为object[][]应该可以Top
7 楼OO00(四个圈)回复于 2006-02-09 12:11:15 得分 0
一维的:
String[] temp = (String[])rs.toArray(new String[rs.size()]);
自己在变一变吧Top
8 楼treeroot(旗鲁特)回复于 2006-02-09 12:32:17 得分 0
NullPointerTop
9 楼xhust2000(xhust2000)回复于 2006-02-09 14:44:39 得分 0
在线等,能解决者马上给分Top
10 楼yanhan0615(炮炮)回复于 2006-02-09 17:50:54 得分 100
首先,对于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就是你要的数据,并且重复第三步Top
11 楼yuzl32(有酒醉)回复于 2006-02-13 10:10:20 得分 0
先确定下面取出的值会不会是null.
ArrayList temp=(ArrayList)rs.get(i); // i --> 0 ~ excel_str.length
System.out.println("rs.get("+i")=" + temp);Top
12 楼xhust2000(xhust2000)回复于 2006-02-13 10:29:45 得分 0
System.out.println("rs.get("+i")=" + temp);
没有null的,是正确的结果Top
13 楼leobase(沉默)回复于 2006-02-13 10:36:36 得分 0
String[][] excel_str=new String[rs.size()][]; //转换为二维数组
------
String[][] excel_str=new String[rs.size()][10000]; //转换为二维数组
Top
14 楼xhust2000(xhust2000)回复于 2006-02-13 11:49:29 得分 0
怎么没有人回答呢?哪位能够看看我的代码,只要能解决,马上揭帖的!Top




