如何修复NullPointerException错误?

时间:2015-02-19 09:09:06

标签: java generics nullpointerexception

我一直在讨论如何修复我的代码,但我没有取得任何成功。我正在尝试创建一个通用方法,允许用户指定数组将包含哪种类型的数据。不幸的是,我的方法不适用于数组,导致它为空...导致错误。这是相关的代码,包括声明的变量,构造函数,addLast方法和相关的行号:

public class ArrayLinearList<E> implements LinearListADT<E> {

private E[] list;
private E[] temp;
private int counter = 0;
private int length = DEFAULT_MAX_CAPACITY;

public ArrayLinearList() {
    list = (E[]) new Object [length];
}

public void addLast(E obj) {
    increaseSize();
    list[counter] = obj;
    counter++;
}

以下是测试人员计划的一部分:

   public class P1Tester {

   private LinearListADT<Integer> list;

   public P1Tester() {
       list = new ArrayLinearList<Integer>();    
16     runTests();
17 }
18    
19 private void runTests() { 
20     for(int i=1; i <= 10; i++)
21     list.addLast(i);         
22     System.out.println("Should print 1 .. 10"); 
23 for(int x : list)
       System.out.print(x + " ");
       System.out.println("\n");
   }

最后,这是我需要实现的界面的一部分:

public interface LinearListADT<E> extends Iterable<E> {
public static final int DEFAULT_MAX_CAPACITY = 100;

//  Adds the Object obj to the end of list.  
public void addLast(E obj);
}

每当我运行测试仪时,都会收到此错误:

Should print 1 .. 10
ERROR java.lang.NullPointerException
java.lang.NullPointerException
at data_structures.P1Tester.runTests(P1Tester.java:23)
at data_structures.P1Tester.<init>(P1Tester.java:16)
at data_structures.P1Tester.main(P1Tester.java:95)

很抱歉,如果这很长但我真的需要帮助!

编辑:这是我的迭代器代码。

public Iterator<E> iterator() {
    return new Iterator<E>(){

        int iterIndex = 0;

        public boolean hasNext() {
        return iterIndex <= counter;
        }

        public E next() {
            if (!hasNext())
            throw new NoSuchElementException();
            return (list[iterIndex++]);
            }
        public void remove(){
            throw new UnsupportedOperationException();
            }
        };

    }

1 个答案:

答案 0 :(得分:0)

第23行的for - 循环将调用list.iterator()。确保这不会返回null。