你可以使用数组引用de for循环的增量

时间:2012-11-25 05:32:37

标签: java arrays for-loop

我有这段代码但是当我运行它时它只给了我一个NullPointerExeption

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;
 }*/

}

}

所以我的问题是:你可以使用incrementor作为数组引用

2 个答案:

答案 0 :(得分:1)

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

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

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

是的,您可以使用循环变量来索引数组。您可以将循环变量用于您想要的任何内容:它只是一个普通变量,恰好是作用于循环的。

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

答案 1 :(得分: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");
    }

<强> EDITTED * 问题内容在评论中被解释 *