访问内部类字段时的java.lang.NullPointerException

访问内部类字段时的java.lang.NullPointerException,java,nullpointerexception,Java,Nullpointerexception,我从下面第19行代码中得到一个空指针异常,seq[index].value=lo。sequence类有一个整数类型的值字段,但我认为问题在于访问seq实例的数组 public class ImprovedFibonacci { class Sequence{ int value = 0; boolean isEven = false; } public static void main(String[] args){ final int MAX_LOOP = 20;

我从下面第19行代码中得到一个空指针异常,
seq[index].value=lo。sequence类有一个整数类型的值字段,但我认为问题在于访问seq实例的数组

public class ImprovedFibonacci {

class Sequence{
    int value = 0;
    boolean isEven = false;
}

public static void main(String[] args){

    final int MAX_LOOP = 20;
    int lo = 1;
    int hi = 1;
    int i = 0;
    String mark = "-";

    int index = 0;
    ImprovedFibonacci.Sequence[] seq = new ImprovedFibonacci.Sequence[MAX_LOOP];
    seq[index].value = lo;

    System.out.println("Fibonacci seq 1 : " + lo);
    System.out.println("Sequence class index: "+index+"value: "+seq[index].value);

    for(i=MAX_LOOP;i>=1;i--) {
        hi = hi + lo;
        lo = hi - lo;
        index++;
        if(hi % 2 == 0){
            mark = "-";
            seq[index].isEven = true;
        }else{
            mark = "";
        }

        System.out.println(i + " : " + hi + mark);
        seq[index].value = hi;
        System.out.println("Sequence class index: "+index+"value: "+seq[index].value+"IsEven: "+seq[index].isEven);
    }
}
}

您可以创建数组,但从不使用对象填充

ImprovedFibonacci.Sequence[] seq = new ImprovedFibonacci.Sequence[MAX_LOOP];
    seq[index].value = lo;
所以seq[index]返回null,null.value给您一个NullPointerException

例如:

Object[] array = new Object[10];
创建一个包含10个元素的数组,但每个元素都是空的

以下是示例代码:

您创建数组,但从不填充对象

ImprovedFibonacci.Sequence[] seq = new ImprovedFibonacci.Sequence[MAX_LOOP];
    seq[index].value = lo;
所以seq[index]返回null,null.value给您一个NullPointerException

例如:

Object[] array = new Object[10];
创建一个包含10个元素的数组,但每个元素都是空的

以下是示例代码:

seq
是一个具有最大循环空间的数组,但其中未实例化任何内容。第一个元素(
seq[0]
)与所有其他元素一样为空

seq[index] = new ImprovedFibonacci.Sequence();
seq[index].value = lo;

seq
是一个具有MAX_循环空间的数组,但其中未实例化任何内容。第一个元素(
seq[0]
)与所有其他元素一样为空

seq[index] = new ImprovedFibonacci.Sequence();
seq[index].value = lo;

我理解它为什么会得到null异常。如何创建所有数组对象的实例?如果我在上面这样做,我会得到以下错误:Description Resource Path Location Type No ImprovedFibonacci类型的封闭实例是可访问的。必须使用ImprovedFibonacci类型的封闭实例限定分配(例如,x.new A(),其中x是ImprovedFibonacci的实例)。ImprovedFibonacci.javaI理解它为什么会得到null异常。如何创建所有数组对象的实例?如果我在上面这样做,我会得到以下错误:Description Resource Path Location Type No ImprovedFibonacci类型的封闭实例是可访问的。必须使用ImprovedFibonacci类型的封闭实例限定分配(例如,x.new A(),其中x是ImprovedFibonacci的实例)。ImprovedFibonacci.java