菜鸟求教:帮帮忙,看几行程序,关于ArrayList

num4lock 2003-10-17 09:43:45
private ArrayList getAllWidths(Graphics g)//获得各列的宽度值
{
ArrayList allWidth=new ArrayList();
ArrayList tableWidth=table.getTableWidth();
for(int i=0;i<tableWidth.size();i++)
{
int stringLength=(int)tableWidth.get(i);
int colLength=stringLength*getWidthPerWord(g);
allWidth.add(i,colLength);
}
return (ArrayList)allWidth;
}
这里边,错误提示如下:
D:\project\road\myjob\PrintTable\TableDraw.java:93: inconvertible types
found : java.lang.Object
required: int
int stringLength=(int)tableWidth.get(i);
^
D:\project\road\myjob\PrintTable\TableDraw.java:95: cannot resolve symbol
symbol : method add (int,int)
location: class java.util.ArrayList
allWidth.add(i,colLength);
^
明明i是int变量,怎么就不行呢?
谢谢!
...全文
32 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
beming 2003-10-17
  • 打赏
  • 举报
回复
int stringLength=(int)tableWidth.get(i);
如果楼上的都不行的话,可以这样做:
int stringLength = Integer.parseInt(tableWidth.get(i).toString());


问题1:你看ArrayList是继承哪个类的,从这里可以找到答案
问题2: 见问题4
问题3:不能,可如上转换
问题4:int不能直接强制转成Object,最好先转成String再强制转成Object类型。

tomcatjava 2003-10-17
  • 打赏
  • 举报
回复
问题!:jdk1.4.2 上写的是Object get(int index)
问题2 :加入int可以的,如:arrayList.add(new Integer(intValue));
问题3 :int stringLength=(Integer)tableWidth.get(i).intValue();
问题4 :肯定需要转换的。int 只是基本数据类型。
showstv 2003-10-17
  • 打赏
  • 举报
回复
int stringLength=tableWidth.get(i)

这个你测试了没有??
num4lock 2003-10-17
  • 打赏
  • 举报
回复
问题4:ArrayList的add方法的原型是add(int index, Object element),如果编译器
不能把add(int,int)中的后一个int变成object,那我还要在add之前做一下变换,
对不对?还有,thinking in java里边开头就在说一切都是对象,那么怎么int不
是对象呢?

顺便补充一下,上边的ArrayList各个对象,我还没有往里边写东西,我想存的
是一张二维表的各列的字符数,然后转换成实际的象素宽度值,这个方法实际上
做的就是这一转化。
num4lock 2003-10-17
  • 打赏
  • 举报
回复
问题1:JDK上边提供的获取ArrayList中变量的方法public Object get(int index),
为什么现在变成get(array,index)了呢?
问题2:ArrayList中的成员都是对象,那么就不能把int型的变量直接加进去,是么?
那怎么才能加进去呢?
问题3:int stringLength=(int)tableWidth.get(i),不能强制转换取出来的对象为
int变量么?
这里边的概念感觉一直不是很清楚,还请高手指点。
huangry 2003-10-17
  • 打赏
  • 举报
回复
tableWidth里面的对象肯定是一个Integer对象

这个对象无法强制转换为int
showstv 2003-10-17
  • 打赏
  • 举报
回复
int stringLength=(int)tableWidth.get(i);

改成 int stringLength=tableWidth.get(i);


没有 add (int,int)这样的方法!
只有


void add(int index, Object element)
boolean add(Object o)
mtou 2003-10-17
  • 打赏
  • 举报
回复
Object o=(int)tableWidth.get(array,i);
allWidth.set(array,i,colLength);
mtou 2003-10-17
  • 打赏
  • 举报
回复
int stringLength=(int)tableWidth.get(array,i);
allWidth.set(array,i,colLength);
realzealy 2003-10-17
  • 打赏
  • 举报
回复
代码都贴出来
num4lock 2003-10-17
  • 打赏
  • 举报
回复
谢谢各位的回答,我现在终于弄明白是怎么一回事了。我也知道应该看好书,
可是没有办法,项目比较急,急缺人手,只好赶鸭子上架了。
huangry 2003-10-17
  • 打赏
  • 举报
回复
这样的问题建议楼主还是先看一下书

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧