我正在处理一项任务,我目前正试图从上到下遍历我的阵列。这个数组是基于 #1 的,因此它从 1 而不是 0 开始。
为了测试我的迭代器,我做了一个附带的反向方法,它从 currentSize 遍历数组并沿着数组向下移动,打印出其中的每个对象。但它似乎没有执行该方法。我假设我的迭代器可能有问题,或者我编写反向方法的方式可能有问题。
最后,当测试器调用迭代器时,我需要数组能够向后遍历。
这是将事物添加到数组中的方式:
public void addFirst(E obj) {
if(currentSize==maxSize)
growStrorage();
if(isEmpty())
storage[1]=obj;
for(int i=1; i>currentSize+1; i++){
storage[i+1]=storage[i];
}
storage[1]=obj;
modCounter++;
currentSize++;
}
这是相反的方法(这是作为一种测试方法来帮助解决我的问题):
public void reverseList() {
for(int i=currentSize; i>=1;i--)
System.out.println(storage[i]);
}
这是我要求的 showMe 方法(这也是作为测试方法来帮助解决我的问题):
public void showMe(){
for(int i=1; i<=currentSize; i++)
System.out.print(i+" ");
}
这是我的迭代器:
public Iterator<E> iterator() {
return new IteratorHelper();
}
private class IteratorHelper <E>implements Iterator <E>{
private int iterIndex;
long stateCheck;
public IteratorHelper(){
iterIndex=1;
stateCheck=modCounter;
}
public boolean hasNext(){
if(stateCheck !=modCounter){
throw new ConcurrentModificationException();
}
return iterIndex<=currentSize;
}
public E next(){
if(!hasNext())
throw new NoSuchElementException();
return (E)storage[iterIndex++];
}
这是测试仪:
for(int i=1; i <= 10; i++)
list.addFirst(new Integer(i));
System.out.println("Current size of list: (should be 10)"
+ list.size());
//My code
System.out.println("Now showing what is in Array..");
list.showMe();
System.out.println("\n");
System.out.println("Now reversing Array..");
list.reverseList();
******* System.out.println("Now using the iterator, should print " *******
+ "10 .. 1");
for(int x : list)
System.out.print(x + " ");
System.out.println();
****** == 我的代码有问题的地方
这是打印:
Should print 1 .. 10
1 2 3 4 5 6 7 8 9 10
Now removing them all
Current size of list: (should be zero) 0
Current size of list: (should be 10)10
Now showing what is in Array..
1 2 3 4 5 6 7 8 9 10
Now reversing Array..
null
null
null
null
null
null
null
null
null
10
Now using the iterator, should print 10 .. 1
10 ERROR java.lang.NullPointerException
java.lang.NullPointerException
at data_structures.P1Tester.runTests(P1Tester.java:49)
at data_structures.P1Tester.<init>(P1Tester.java:14)
at data_structures.P1Tester.main(P1Tester.java:103)