0

我有这段代码,但是当我运行它时,它只会给我一个NullPointerException

import javax.swing.JOptionPane;
public class System {


public static void main(String[] args) {
    int a=Integer.parseInt(JOptionPane.showInputDialog("How many planets"));
    Planet p[]=new Planet[a];
    for (int i=1;i<=a;i++){
        ** p[i].setName("romain"); **
                    //line bugging is above
    }
    //for info the .setName method of the Planet class is
     /*public void setName(String Na){
     name=Na;
 }*/

}

}

所以我的问题是:你能用增量器作为数组引用吗

4

2 回答 2

1

您尚未初始化任何Planet引用。这就是您收到 NullPointerException 的原因。

Planet p[]=new Planet[a]创建一个引用数组Planet,但内容全部初始化为空。你需要有这样的东西:

Planet p[] = new Planet[a];
for (int i = 0; i < a; ++i) {
    p[i] = new Planet();
    p[i].setName("whatever");
}

是的,您可以使用循环变量来索引数组。您可以根据需要使用循环变量:它只是一个普通变量,恰好被限定为循环。

请注意,在 Java 中,数组始终是从零开始的,而不是从一开始的。第一个元素的索引为零。

于 2012-11-25T05:38:13.347 回答
0

您的数组没有说它将从索引 1 开始,也没有初始化为从 1 开始。给定您的输入样式,您将植物数量设置为数组长度。

从 0 开始循环。

int a=Integer.parseInt(JOptionPane.showInputDialog("How many planets"));
    Planet p[]=new Planet[a];
    for (int i=0;i<a;i++)
    {
//    -------------------------------------------------------------------
            p[i] = new Planet();       // initializing object reference
//    -------------------------------------------------------------------
        p[i].setName("romain");
    }

已编辑 *问题内容在评论中解释*

于 2012-11-25T05:38:29.913 回答