【问题标题】:java array declarationjava数组声明
【发布时间】:2012-11-14 04:34:27
【问题描述】:

当我调用我的类的构造函数时,我得到了注释中显示的错误 (当我删除数组部分时一切正常)。这是因为数组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];
    }

}

【问题讨论】:

    标签: java arrays declaration


    【解决方案1】:

    你必须初始化你的数组,比如public int[] seq = new int[10];

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

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

    【讨论】:

    • 如果我不知道尺寸怎么办[取决于输入]?
    • 然后你必须等待初始化它,直到你知道它的大小或使用不同的数据结构,对于java来说是ArrayList。数组不能动态调整大小。
    • @user1763553 你可以在构造函数中初始化它,或者是的,just use a collection
    • @user1763553 在你的例子中,因为你正在计算斐波那契数列直到参数x.last,你可以在里面初始化它:seq = new int[x.last]
    • 问题是这是一个序列,所以即使放置了一些元素,我也永远不会知道它的大小。我不知道它什么时候结束,那么 ArrayList 方法有什么用处?以及如何实施?谢谢!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      public int [] seq = new int[anySize];
      

      【讨论】:

        猜你喜欢
        • 2015-02-20
        • 1970-01-01
        • 2017-08-04
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多