![](/img/trans.png)
[英]Getting error exception in thread "main" java.lang.NullPointerException
[英]Getting Exception in thread “main” java.lang.NullPointerException
在运行此代码时
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)
我为同一类创建了一个对象数组,并尝试使用其实例变量
虽然我已经搜索了,但是我找不到错误。
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;
}
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;
}
这将工作:)
您需要为每个数组条目创建一个实例才能访问它:
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;
}
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;
}
}
}
您刚刚创建了一个可以容纳Main
实例的数组,但是没有初始化内容,因此该数组的所有元素均为null
。 在分配值之前,先执行ary[i]= new Main()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.