运行此代码时
public class Main
{
public int a;
public int b;
public static void main(String []args)
{
Main []ary=new Main[26];
int i;
for(i=0;i<26;i++)
{
ary[i].a=0;
ary[i].b=i;
}
}
}
我收到以下错误..
Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:11)
我为同一个类创建了一个对象数组,并尝试使用其实例变量
虽然我搜索了它,但我无法找到错误..
答案 0 :(得分:4)
Main []ary=new Main[26];
您声明array
未分配值。
所以在内存中,你的数组看起来像Main []ary={null,null ...., null};
当应用程序在需要对象的情况下尝试使用null时抛出。其中包括:
就像null.a
导致NullPointerException
。
for(i=0;i<26;i++)
{
Main m = new Main();
m.a =0;
m.b =i;
ary[i]= m;
}
答案 1 :(得分:2)
Main []ary=new Main[26];
int i;
for(i=0;i<26;i++)
{
ary[i]=new Main();
ary[i].a=0;
ary[i].b=i;
}
这将有效:)
答案 2 :(得分:1)
您需要为每个数组的条目创建一个实例才能访问它:
for(i=0;i<26;i++)
{
ary[i] = new Main(); // Otherwise ary[i] is null and will cause an exception on the following line
ary[i].a=0;
ary[i].b=i;
}
答案 3 :(得分:1)
ary [i]为空
public class Main
{
public int a;
public int b;
public static void main( String[] args )
{
Main[] ary = new Main[26];
int i;
for ( i = 0; i < 26; i++ )
{
ary[i]=new Main();//<---(here ary[i] was null)
ary[i].a = 0;
ary[i].b = i;
}
}
}
答案 4 :(得分:0)
您刚刚创建了一个可以容纳Main
实例的数组,但是您没有初始化内容,因此数组的所有元素都是null
。在分配值之前执行ary[i]= new Main()
。