Ok, um es kurz zu erklären, was für ein Problem ich habe:
Ich versuche eine Collatzfolge per Iterator anstelle von einer einfachen Schleife ausgeben zu lassen.
Aus diesem Grund habe ich eine Klasse 'CollatzIterator' erstellt, die die Metoden von 'Iterator' implementiert.
Zur Vollständigkeit, das sieht momentan so aus und sollte auch noch funktionieren:
Jetzt habe ich aber ein Problem in der Klasse Collatz, in der ich die eigentliche ArrayList erstelle und in der die Methode steht, die den CollatzIterator erstellen soll.
Normalerweise würde man einen Interator ja folgendermaßen aufrufen:
Iterator<Integer> i = list.iterator();
Aber in diesem Programm geht das anscheinend nicht.
Deshalb miene Frage, wie bekomme ich den Startwert meiner eigentlichen ArrayList in meinen CollatzIterator?
Oder habe ich mich darüber schon blöd gedacht und übersehe irgendwas Elementares?
Danke schonmal im Voraus für jede Hilfe.
Ich versuche eine Collatzfolge per Iterator anstelle von einer einfachen Schleife ausgeben zu lassen.
Aus diesem Grund habe ich eine Klasse 'CollatzIterator' erstellt, die die Metoden von 'Iterator' implementiert.
Zur Vollständigkeit, das sieht momentan so aus und sollte auch noch funktionieren:
Java:
import java.util.*;
@SuppressWarnings("rawtypes")
public class CollatzIterator<T> implements Iterator{
@Override
public boolean hasNext() {
boolean c = true;
if (Collatz.list.get(Collatz.list.size()) == 1)
c = false;
return c;
}
@Override
public Object next() {
int k = Collatz.list.get(Collatz.list.size());
if (k%2 == 0)
k = k/2;
else
k = k*3+1;
return k;
}
@Override
public void remove() {
throw new UnsupportedOperationException("Not supported.");
}
}
Jetzt habe ich aber ein Problem in der Klasse Collatz, in der ich die eigentliche ArrayList erstelle und in der die Methode steht, die den CollatzIterator erstellen soll.
Java:
import java.util.*;
public class Collatz {
public static ArrayList<Integer> list;
public Collatz(int sz){
list = new ArrayList<Integer>();
list.add(sz);
}
public CollatzIterator<Integer> iterator(){ //in dieser Methode fehlt der 'Startwert' der Collatzfolge.
CollatzIterator<Integer> collIt = new CollatzIterator<Integer>();
while (collIt.hasNext())
collIt.next();
return collIt;
}
}
Normalerweise würde man einen Interator ja folgendermaßen aufrufen:
Iterator<Integer> i = list.iterator();
Aber in diesem Programm geht das anscheinend nicht.
Deshalb miene Frage, wie bekomme ich den Startwert meiner eigentlichen ArrayList in meinen CollatzIterator?
Oder habe ich mich darüber schon blöd gedacht und übersehe irgendwas Elementares?
Danke schonmal im Voraus für jede Hilfe.