在线程“main”java.lang.NullPointerException中获取异常

时间:2013-12-12 08:14:51

标签: java

运行此代码时

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)

我为同一个类创建了一个对象数组,并尝试使用其实例变量

虽然我搜索了它,但我无法找到错误..

5 个答案:

答案 0 :(得分:4)

 Main []ary=new Main[26];

您声明array未分配值。

所以在内存中,你的数组看起来像Main []ary={null,null ...., null};

NullPointerException

  

当应用程序在需要对象的情况下尝试使用null时抛出。其中包括:

  • 调用null对象的实例方法。
  • 访问或修改空对象的字段。
  • 将null的长度视为数组。
  • 访问或修改null的插槽,就像它是一个数组一样。
  • 抛出null,就好像它是一个Throwable值。

就像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()