首先先来看看这个异常是什么样子的
异常~
这个异常Exception in thread "AWT-EventQueue-0"简单解释就是空指针异常。
在JAVA中,如果一个对象没有被实例化,就等于null。此时对其进行的操作都是违法的。也就是会发生上述异常。
此时先看看这个异常发生的位置,代码如下:

for(int i=0;i<shapes.length ; i++) {
			shapes[i].draw(g);//错误发生位置
		}

乍一看似乎没有什么问题,但是!看一看我之前对shapes数组的定义:

Shape[] shapes = new Shape[100];

这里我规定了shapes数组对象的长度为100,这时利用length函数获得的长度也为100。而这个数组中有相当一部分是null,这时如果调用draw画出这个对象存储的东西,就会发生空指针异常。
此时只需要在for循环的终止条件中加上一个判断是否为null的就好。
然而我运行之后又发生了空指针异常的错误。
这一段出现问题的代码是这样的

duobian.setData(x1, y1, x2, y2, shapeStr);
shapes[shapecount++] = duobian;

我依旧不知道问题在哪。。。。
但是如果我改成这样就对了

Shape s= new Shape();
s.setData(lastx, lasty, x2, y2, shapeStr);
shapes[shapecount++] = s;

在请教了老师之后,我发现我的错误在于,没有定义对象;

Shape duobian ;

在这种定义方式下,其实只是起了一个名字,并没有定义一个实际的对象。
改成下面这样就可以了

Shape duobian = new Shape();
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐