简体   繁体   English

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

[英]Getting Exception in thread “main” java.lang.NullPointerException

While running this code 在运行此代码时

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

I am getting the following error.. 我收到以下错误。

Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:11)

I created an array of objects for the same class and trying to use its instance variables 我为同一类创建了一个对象数组,并尝试使用其实例变量

Though I searched for it, i am not able to find the mistake.. 虽然我已经搜索了,但是我找不到错误。

 Main []ary=new Main[26];

You declared array not assigned values in it. 您声明array未分配值。

So in memory, you array looks like Main []ary={null,null ...., null}; 因此,在内存中,数组看起来像Main []ary={null,null ...., null};

NullPointerException

Thrown when an application attempts to use null in a case where an object is required. 当应用程序在需要对象的情况下尝试使用null时抛出。 These include: 这些包括:

  • Calling the instance method of a null object. 调用空对象的实例方法。
  • Accessing or modifying the field of a null object. 访问或修改空对象的字段。
  • Taking the length of null as if it were an array. 将null的长度视为数组。
  • Accessing or modifying the slots of null as if it were an array. 访问或修改null插槽,就好像它是一个数组一样。
  • Throwing null as if it were a Throwable value. 将null抛出,就好像它是一个Throwable值一样。

It's like null.a which causes NullPointerException . 就像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;
    }

This will work :) 这将工作:)

You need to create an instance for each of the array's entries in order to access it : 您需要为每个数组条目创建一个实例才能访问它:

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] is null 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;
        }
    }
}

You just created an array that can hold instances of Main , but you didn't initialize the contents, so all elements of the array are null . 您刚刚创建了一个可以容纳Main实例的数组,但是没有初始化内容,因此该数组的所有元素均为null Do ary[i]= new Main() before assigning the values. 在分配值之前,先执行ary[i]= new Main()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在线程“main”中获取错误异常 java.lang.NullPointerException - Getting error exception in thread "main" java.lang.NullPointerException 从休眠中在线程“ main”中获取异常java.lang.NullPointerException - getting Exception in thread “main” java.lang.NullPointerException from hibernate 在线程“主”中获取异常java.lang.NullPointerException错误 - Getting Exception in thread “main” java.lang.NullPointerException error 线程“ main”中的异常java.lang.NullPointerException - Exception in thread “main” java.lang.NullPointerException “线程“ main”中的异常java.lang.NullPointerException” - “Exception in thread ”main“ java.lang.NullPointerException” 线程“ main”中的异常java.lang.NullPointerException - Exception in thread “main” java.lang.NullPointerException , 线程“main”中的异常 java.lang.NullPointerException - ,Exception in thread "main" java.lang.NullPointerException 线程“ main”中的异常java.lang.NullPointerException - Exception in thread “main” java.lang.NullPointerException 线程“main”中的异常 java.lang.NullPointerException 5 - Exception in thread "main" java.lang.NullPointerException 5 Java:线程“main”java.lang.NullPointerException中的异常 - Java: Exception in thread “main” java.lang.NullPointerException
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM