Java 空指针异常,无法解析

Java 空指针异常,无法解析,java,nullpointerexception,Java,Nullpointerexception,当我运行percolation类时,我得到了一个空指针异常,我没有任何线索,如何摆脱它,任何帮助都将非常感谢 public class Bucket { int rows,cols,blocked,open,full; public void initialize() { rows=0; cols=0; blocked=0; System.out.println("You were here");

当我运行percolation类时,我得到了一个空指针异常,我没有任何线索,如何摆脱它,任何帮助都将非常感谢

public class Bucket

{

    int rows,cols,blocked,open,full;

    public void initialize()
    {
        rows=0;
        cols=0;
        blocked=0;
        System.out.println("You were here");
    }
    public void open()
    {
        blocked=1;
    }
}
公共类过滤
{
//公共渗滤(int N)
公共静态void main(字符串args[])引发异常
{
尝试
{
int N=5;
Bucket[]barray=新Bucket[N][N];

对于(int i=0;i使用
new
操作符创建数组只需分配一个满
null
s的数组。在尝试使用它之前,您仍然需要分别初始化每个元素:

public class Percolation
{

    //public Percolation(int N)
    public static void main(String args[])throws Exception
    {
        try
        {
            int N=5;
            Bucket[][] barray=new Bucket[N][N];
            for(int i=0;i<N;i++)
            {
                for(int j=0;j<N;j++)
                {
                    barray[i][j].initialize();
                    //barray[i][j].cols=0;  
                    //barray[i][j].blocked=0;           
                }
            }
        }
        catch(Exception e)
        {
            System.out.println(e);
        }
    }
然后,在初始化阵列时:

public class Bucket 
{
    int rows,cols,blocked,open,full;

    public Bucket() {
        initialize();
    }

    public void initialize()
    {
        rows=0;
        cols=0;
        blocked=0;
        System.out.println("You were here");
    }

    public void open()
    {
        blocked=1;
    }

}
int N=5;
Bucket[]barray=新Bucket[N][N];

对于(int i=0;i使用
new
操作符创建数组只需分配一个满
null
s的数组。在尝试使用它之前,您仍然需要分别初始化每个元素:

public class Percolation
{

    //public Percolation(int N)
    public static void main(String args[])throws Exception
    {
        try
        {
            int N=5;
            Bucket[][] barray=new Bucket[N][N];
            for(int i=0;i<N;i++)
            {
                for(int j=0;j<N;j++)
                {
                    barray[i][j].initialize();
                    //barray[i][j].cols=0;  
                    //barray[i][j].blocked=0;           
                }
            }
        }
        catch(Exception e)
        {
            System.out.println(e);
        }
    }
然后,在初始化阵列时:

public class Bucket 
{
    int rows,cols,blocked,open,full;

    public Bucket() {
        initialize();
    }

    public void initialize()
    {
        rows=0;
        cols=0;
        blocked=0;
        System.out.println("You were here");
    }

    public void open()
    {
        blocked=1;
    }

}
int N=5;
Bucket[]barray=新Bucket[N][N];

对于(int i=0;i您创建一个
Bucket
对象数组。但是,它们没有初始化

您需要通过以下方式创建
Bucket
的实例:

int N=5;
Bucket[][] barray=new Bucket[N][N];
for(int i=0;i<N;i++)
{
    for(int j=0;j<N;j++)
    {
        barray[i][j] = new Bucket(); // no need to call initialize()
    }
}
publicstaticvoidmain(字符串args[])引发异常
{
尝试
{
int N=5;
Bucket[]barray=新Bucket[N][N];

对于(int i=0;i您创建一个
Bucket
对象数组。但是,它们没有初始化

您需要通过以下方式创建
Bucket
的实例:

int N=5;
Bucket[][] barray=new Bucket[N][N];
for(int i=0;i<N;i++)
{
    for(int j=0;j<N;j++)
    {
        barray[i][j] = new Bucket(); // no need to call initialize()
    }
}
publicstaticvoidmain(字符串args[])引发异常
{
尝试
{
int N=5;
Bucket[]barray=新Bucket[N][N];

对于(int i=0;i
barray[i][j]=new Bucket()
inside
for
loop
barray[i][j]=new Bucket()
inside
for
loopYa,非常感谢您的帮助,是的,我当然会遵循您的建议!:)是的,非常感谢您的帮助,是的,我当然会遵循您的建议!:)