Я работаю над заданием, и в настоящее время я застрял в попытке пройти через свой массив сверху вниз. Этот массив основан на # 1, поэтому он начинается с 1, а не 0.Как я могу пройти назад в своем неупорядоченном массиве?
Чтобы проверить мой итератор, я сделал сопроводительный обратный метод, который проходит через массив из currentSize и gos вниз по массиву, распечатывая каждый объект в Это. Но, похоже, этот метод не выполняется. Я предполагаю, что с моим итератором может быть что-то не так, или я пишу свой обратный метод.
Ультиматули, мне нужно, чтобы массив мог возвращаться назад, когда тестер вызывает итератор.
Вот как вещи добавляются в массив:
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)
Ваш метод обратного списка выводит только индекс, а не любое значение этого индекса. –
@BrettOkken спасибо за указание, я просто изменил его. Но все же никаких изменений в поведении. –
Ваш обратный список не делает ничего, кроме распечатки. Это фактически не отменяет порядок записей. –