站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题数组不能这么使用吗?

数组不能这么使用吗?

摘要: 数组不能这么使用吗?


public class WPlane {
WPoint ps[];
int p_num;

WLine lines[];
int line_num;

public WPlane() {
create();
}

public void create(){
ps = new WPoint[10];
lines = new WLine[10];

ps[0].x = 5;
ps[0].y = 0;
ps[1].x = 5;
ps[1].y = 5;
ps[2].x = 0;
ps[2].y = 5;
ps[3].x = 5;
ps[3].y = 5;

lines[0].fromP = 0;
lines[0].toP = 1;
lines[1].fromP = 2;
lines[1].toP = 3;

line_num = 2;
}

}

为何会出现如下错误?
Unable to create MIDlet wmdPack.MIDlet1

java.lang.NullPointerException
at wmdPack.WPlane.create(+25)
at wmdPack.WPlane.(+8)
at wmdPack.LowEventHandleCanvas.(+12)
at wmdPack.MIDlet1.(+24)
at java.lang.Class.runCustomCode(+0)
at com.sun.midp.midlet.MIDletState.createMIDlet(+19)
at com.sun.midp.midlet.Selector.run(+22)

//////////////////////
数组不能这么使用吗?
ps[0].x = 5;



可以这么用,但是,你在new的时候只是new了存放10个WPoint对象的数组,但是数组内部的具体对象是空的,所以报空指针,应该:
WPoint w = new WPoint();
ps[0] = w;
在做上面的操作就没有问题了


没有一次性存放10个元素的方法吗?
比如说:
int w[] = new int[10];
这个操作可以,但是为何下面的不可以呢?
WPoint ps[] = new WPoint[10];

如果改成这样也不行呀?
WPoint [] ps = new WPoint[10];



ps = new WPoint[10];

java.util.Arrays.fill(ps, new WPoint());//数组中每个元素都填充 相同引用元素

for(int i=0, len=ps.length; i ps[i] = new WPoint();
}


我明白了,对象类 的 new Obj[] ,实际上是分配数组空间,但是不是对象空间。
只有 new Obj() 才是真正的分配实际的对象啊!
不知道这么说对不对?


对,就是这样!
只有new XX()才能真正的实例化变量


↑返回目录
前一篇: Form里可以有traverse()这样的行为吗?
后一篇: (紧急求助)利用j2me技术开发手机游戏前途如何?