我有这段代码但是当我运行它时它只给了我一个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作为数组引用
答案 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 强> * 问题内容在评论中被解释 *