我一直在讨论如何修复我的代码,但我没有取得任何成功。我正在尝试创建一个通用方法,允许用户指定数组将包含哪种类型的数据。不幸的是,我的方法不适用于数组,导致它为空...导致错误。这是相关的代码,包括声明的变量,构造函数,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();
}
};
}
答案 0 :(得分:0)
第23行的for
- 循环将调用list.iterator()
。确保这不会返回null。