Hallo,
aus "Java ist auch Insel" habe ich die folgende Aufgabe zu der leider die Lösung fehlt:
"Implementiert man das Interface java.util.Enumeration, so lassen sich damit die Elemente einer Klasse der Reihe nach aufzählen. Implementiere eine Klasse Quadratic, die Quadratzahlen bis kleiner 1000 liefert. Der Zugriff soll dabei mittels nextElement() erfolgen. hasMoreElements() darf nur so lange true sein, bis die Werte tatsächlich kleiner 1000 sind.
Wie wird das Ende angezeigt, falls wir doch noch einen Wert herausholen wollen, dies aber überhaupt nicht erlaubt ist?"
Nun würde ich, wenn ein Wert versucht wird herauszuholen, obwohl die 1000 schon erreicht ist, eine Exception werfen. Das ist doch vermutlich mit der letzten Frage in der Aufgabenstellung gemeint? Laut dazugehöriges Buch gibt es bereits eine NoSuchElementException. Die kann ich hier doch sicherlich verwenden?
Warum wird dann aber der folgende Code nicht kompiliert?
aus "Java ist auch Insel" habe ich die folgende Aufgabe zu der leider die Lösung fehlt:
"Implementiert man das Interface java.util.Enumeration, so lassen sich damit die Elemente einer Klasse der Reihe nach aufzählen. Implementiere eine Klasse Quadratic, die Quadratzahlen bis kleiner 1000 liefert. Der Zugriff soll dabei mittels nextElement() erfolgen. hasMoreElements() darf nur so lange true sein, bis die Werte tatsächlich kleiner 1000 sind.
Wie wird das Ende angezeigt, falls wir doch noch einen Wert herausholen wollen, dies aber überhaupt nicht erlaubt ist?"
Nun würde ich, wenn ein Wert versucht wird herauszuholen, obwohl die 1000 schon erreicht ist, eine Exception werfen. Das ist doch vermutlich mit der letzten Frage in der Aufgabenstellung gemeint? Laut dazugehöriges Buch gibt es bereits eine NoSuchElementException. Die kann ich hier doch sicherlich verwenden?
Warum wird dann aber der folgende Code nicht kompiliert?
Java:
import java.util.Enumeration;
public class Quadratic implements Enumeration
{
/*
* Aufgabe:
* Implementiert man das Interface java.util.Enumeration, so lassen sich
* damit die Elemente einer Klasse der Reihe nach aufzählen.
* Implementiere eine Klasse Quadratic, die Quadratzahlen bis kleiner 1000
* liefert. Der Zugriff soll dabei mittels nextElement() erfolgen.
* hasMoreElements() darf nur so lange true sein, bis die Werte tatsächlich
* kleiner 1000 sind.
* Wie wird das Ende angezeigt, falls wir doch noch einen
* Wert herausholen wollen, dies aber überhaupt nicht erlaubt ist?
*/
//aktuelle Quadratzahl
private int aktQ;
/**
* @param args
*/
public static void main(String[] args) {
Quadratic meineQuadratzahl = new Quadratic();
try{
while(meineQuadratzahl.hasMoreElements()){
System.out.println("nächste Zahl: " + meineQuadratzahl.nextElement());
}
System.out.println("nächste Zahl: " + meineQuadratzahl.nextElement());
}
catch(NoSuchElementException e){
System.out.println("keine Quadratzahl mehr!");
}
}
private Quadratic(){
aktQ = 0;
}
public boolean hasMoreElements() {
if(aktQ * aktQ < 1000)
return true;
else
return false;
}
public Object nextElement() throws NoSuchElementException {
if(!hasMoreElements())
throw new NoSuchElementException ();
int y = aktQ * aktQ;
aktQ++;
return y;
}
}