0

当我调用我的类的构造函数时,我得到了注释中显示的错误(当我删除数组部分时一切正常)。这是因为数组声明错误seq吗?

public class FibIt implements SeqIt{
    public int counter;
    public int ptr;
    public int [] seq;

    public FibIt(Fib x)
    {   counter=0;
        ptr=0;
        seq[0]=x.first1;         //gives me an error here saying Exception in 
                                     //thread "main" java.lang.NullPointerException
                                 //at FibIt.<init>(FibIt.java:9)
                                     //at Main.main(Main.java:6)
        seq[1]=x.first2;
        for (int i=2; seq[i-1]<=x.last; i++)
            {seq[i]=seq[i-1]+seq[i-2];}
    }
    @Override
    public int func2() {
        // TODO Auto-generated method stub
        ptr++;
        return seq[ptr-1];
    }

}
4

3 回答 3

6

你必须初始化你的数组,所以像public int[] seq = new int[10];

然后将 10 替换为您需要的任何大小。

当@Jack 发布了一个很好的解决方案时,我正要回答你的问题。ArrayList<Integer>如果您不知道数组的大小,这将非常有用。

于 2012-11-14T04:35:53.153 回答
2

您需要初始化数组。一件事是声明,另一件事是初始化

int[] seq声明一个 name 变量,seq它是一个int. 然后你需要通过为它分配一个数组的构造函数来有效地初始化它:new int[dimension]

于 2012-11-14T04:37:34.070 回答
1

是的,您只声明了数组但没有初始化。

public int [] seq = new int[anySize];
于 2012-11-14T04:37:26.693 回答