for (int i = 0; i < s.length; i++) {
s[i] = gen.next();
for (Shape shp : s) {
shp.draw();
}
}这两层循环有些冗余
for (int i = 0; i < s.length; i++) { for 循环就是想遍历数组s
for (Shape shp : s) { for -each 循环也是遍历数组s
楼主的空指针问题出在 Shape[] s = new Shape[3];
楼主只 初始化了长度为3 的Shape 型的数组,但是却没有给s[i] 挨个赋值,即没有给数组元素指向对象的引用
所以 shp 都是null ,再调用draw 就空指针了
public static void main(String[] args) {
// TODO Auto-generated method stub
Shape[] s = new Shape[3];
for (int i = 0; i < s.length; i++) {
gen.next().draw();
}
}
Shape[] s = new Shape[3];//定义未初始化
for (int i = 0; i < s.length; i++) {
s[i] = gen.next();//初始化一个
for (Shape shp : s) {
shp.draw();//第一次遍历的时候只有s[0],初始化,其他的都没有
}