Iterator + Methode

Stargirlxo

Mitglied
Hallo,
ich bräuchte bitte Hilfe zu einer Aufgabe, wo ich leider gar nicht weiter komme.
Sie lautet:
"Schreiben Sie für die Klasse Videospiel eine Methode figurenAktualisieren(), in der mit einem Iterator über alle Objekte in figuren iteriert wird, um jede Figur zu bewegen (s.o.). Wenn es sich bei dem Objekt um einen Gegner handelt, so soll vor dem Bewegen geprüft werden, ob der Gegner verletzt ist (Bei einem Gegner kann man mit der Methode boolean istVerletzt() abfragen, ob er durch deine Kugel verletzt worden ist).
Ist dies der Fall so soll das Objekt aus der ArrayList gelöscht werden."


Ich habe bis jetzt das aufgeschrieben gehabt:
public void figurenAktualisieren(){

Iterator <Spielfigur> it = figuren.iterator();
while(it.hasNext() ){

if(it.Next() instance of Gegner && boolean istVerletzt() = true){
it.remove();

}}}

Leider weiß ich nicht genau, wo ich die Methode istVerletzt() hinschreiben soll, weil ich vermute der Code wird so nicht funktionieren bzw. ich bin mir unsicher, da ich leider nicht so stark in Java bin.
Ich bitte um Feedback danke :)

Mfg.
 

fhoffmann

Top Contributor
Bei einem Iterator solltest du dir das Objekt einmal holen, also:
Java:
while(it.hasNext() ) {
  Spielfigur spielfigur = it.next();
  // ...
}
Falls diese Spielfigur ein Gegner ist, kannst du dazu casten und darauf istVerletzt() aufrufen.
 

Stargirlxo

Mitglied
Bei einem Iterator solltest du dir das Objekt einmal holen, also:
Java:
while(it.hasNext() ) {
  Spielfigur spielfigur = it.next();
  // ...
}
Falls diese Spielfigur ein Gegner ist, kannst du dazu casten und darauf istVerletzt() aufrufen.

Danke also ich muss nur "Spielfigur spielfigur = it.next();" hinzufügen und davor schreiben und der Code ist richtig?
Und müsste dann nicht in meinem Code "gegner" durch spielfigur ersetzt werden?
 
K

kneitzel

Gast
Nein, Dein Code wird dadurch nicht wirklich besser. Statt weiterer next() Aufrufe, hast Du die Variable zu nutzen.
Und wenn die Spielfigur vom Typ Gegner ist, dann musst du da einen cast auf Gegner machen um dann die Methode auf dem Gegner aufzurufen.
 

Stargirlxo

Mitglied
Nein, Dein Code wird dadurch nicht wirklich besser. Statt weiterer next() Aufrufe, hast Du die Variable zu nutzen.
Und wenn die Spielfigur vom Typ Gegner ist, dann musst du da einen cast auf Gegner machen um dann die Methode auf dem Gegner aufzurufen.

Wird wohl doch schwieriger als ich gedacht habe.. dachte bin mit meinem Code schon halbwegs richtig und für n Anfänger habe ich mit Cast usw. noch immer meine Probleme
Spielfigur spielfigur = it.next();
Gegner spielfigur = (Gegner)spielfigur;

Komme jetzt aber auch nicht mehr weiter, wäre cool wenn hier irgendjemand ist der mir den korrekten Code zeigen könnte
 

Stargirlxo

Mitglied
Java:
Spielfigur spielfigur = it.next();
if (spielfigur instanceof Gegner) {
    Gegner gegner = (Gegner)spielfigur;
    // ...
}
Also nochmal ich weiß ja dann ob er Gegner ist, würde ich dann im nächsten Schritt einfach danach dann schreiben können

if (Gegner.istVerletzt() ){
it.remove();
}

und der Code wäre somit komplett dann oder?
 
K

kneitzel

Gast
Und an der Stelle ist ja in der Aufgabe schon etwas vorgegeben:
(Bei einem Gegner kann man mit der Methode boolean istVerletzt() abfragen, ob er durch deine Kugel verletzt worden ist).
Ein Gegner hat also eine Methode istVerletzt() - eine Methode auf einer Instanz aufrufen hast Du ja schon gemacht ... z.B. next auf der Instanz in it...

Ist dies der Fall so soll das Objekt aus der ArrayList gelöscht werden.
Das wird dann ggf. noch problematisch. Denn eine ArrayList mag keine Veränderungen so lange ein Iterator aktiv ist. Daher solltest Du Dir einmal den Iterator in Ruhe ansehen, was der noch so an Methoden liefert.

Und da sich das nun überschnitten hat:
Also nochmal ich weiß ja dann ob er Gegner ist, würde ich dann im nächsten Schritt einfach danach dann schreiben können

if (Gegner.istVerletzt() ){
it.remove();
}

und der Code wäre somit komplett dann oder?
Fast. Gegner ist aber die Klasse - du willst aber doch die Instanz ...
Der zweite Punkt von mir ist aber damit schon erfüllt!
 

Stargirlxo

Mitglied
So das wäre jetzt mein fertiger Code.. diese Aufgabe zerbricht mir echt mein Kopf gerade, danke für die Hilfe alleine hätte ich es nicht geschafft.

public void figurenAktualisieren(){

Iterator <Spielfigur> it = figuren.iterator();
while(it.hasNext() ){

Spielfigur spielfigur = it.next();
if(spielfigur instanceof Gegner) {
Gegner gegner = (Gegner)spielfigur;

if(spielfigur.istVerletzt() )
it.remove();
}
}
}
 
K

kneitzel

Gast
Falls Spielfigur die Methode istVerletzt() nicht implementiert bekommst Du aber eine Fehlermeldung.

Wenn Du keine Fehlermeldung bekommst, kannst Du die Zeile
Gegner gegner = (Gegner)spielfigur;
auch löschen. Die wird dann nicht mehr benötigt. Die haben wir ja eingebracht, damit Du dann den Aufruf auf dieser Variable durchführen kannst.
 

Stargirlxo

Mitglied
Falls Spielfigur die Methode istVerletzt() nicht implementiert bekommst Du aber eine Fehlermeldung.

Wenn Du keine Fehlermeldung bekommst, kannst Du die Zeile
Gegner gegner = (Gegner)spielfigur;
auch löschen. Die wird dann nicht mehr benötigt. Die haben wir ja eingebracht, damit Du dann den Aufruf auf dieser Variable durchführen kannst.
Ach so gut zu wissen, danke für die Hilfe nochmal :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
N Kann man einen Iterator nur einmal verwenden Java Basics - Anfänger-Themen 5
N Warum Springt iterator nur in der Schleife weiter Java Basics - Anfänger-Themen 9
volcanos HashSet und Iterator -> Falsche Sortierreihenfolge ? Java Basics - Anfänger-Themen 18
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
J Methoden iterator for-schleife (hasNext() ) Java Basics - Anfänger-Themen 7
G Java Listen und Iterator Java Basics - Anfänger-Themen 2
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
F nur das erste Element mit iterator ausgeben Java Basics - Anfänger-Themen 5
O Iterator erneut! Java Basics - Anfänger-Themen 8
O Iterator für eine geordnete Menge Java Basics - Anfänger-Themen 134
J Doppelte Ausgabe erzeugen Iterator Java Basics - Anfänger-Themen 6
K Iterator zurückliefern Java Basics - Anfänger-Themen 8
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
S Iterator einer Liste Java Basics - Anfänger-Themen 4
B Sortieren mit Iterator Java Basics - Anfänger-Themen 4
I Erste Schritte Iterator Java Basics - Anfänger-Themen 3
M Iterator funktioniert nicht Java Basics - Anfänger-Themen 5
M Iterator cannot refer to a non final... Java Basics - Anfänger-Themen 20
O Interface Iterator Java Basics - Anfänger-Themen 2
M Collections Frage Beispielprogrammierung Iterator Java Basics - Anfänger-Themen 13
M Iterator Java Basics - Anfänger-Themen 25
J Iterator Funktioniert nicht richtig in StackImplementierung Java Basics - Anfänger-Themen 3
Z Hashmap Iterator löscht nicht Java Basics - Anfänger-Themen 8
L Iterator Java Basics - Anfänger-Themen 1
K Nutzung einer Klasse die das Iterator-Interface implementiert Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
M Collections Iterator und generischer Baum Java Basics - Anfänger-Themen 0
O Kleine Frage zu Iterator und Iterable Java Basics - Anfänger-Themen 6
OnDemand Iterator Interfacve Java Basics - Anfänger-Themen 23
S Iterator next() Nullpointer Java Basics - Anfänger-Themen 2
T Methoden Iterator über ArrayList Java Basics - Anfänger-Themen 3
W Iterator Java Basics - Anfänger-Themen 2
D Aufgabe: Stack mit Iterator Java Basics - Anfänger-Themen 8
R Mit iterator auf Element zugreifen Java Basics - Anfänger-Themen 2
T Collections Zugriff auf Elemente aus Iterator() Schleife Java Basics - Anfänger-Themen 4
P Casting Warning bei Iterator Java Basics - Anfänger-Themen 32
F Wie Werte einer ArrayList an einen 'Custom'-Iterator übergeben? Java Basics - Anfänger-Themen 2
J Iterator Java Basics - Anfänger-Themen 5
P ArrayList mit Iterator / Iterable ausgeben Java Basics - Anfänger-Themen 8
B Funktionsweise Iterator unklar Java Basics - Anfänger-Themen 7
A Datentypen Iterator von hinten nach vorne durchlaufen Java Basics - Anfänger-Themen 4
D Wie Iterator Remove implementieren? Java Basics - Anfänger-Themen 11
B Datentypen Inhalt zum Iterator wieder aufrufen? Java Basics - Anfänger-Themen 10
D Iterator schaltet nicht weiter?! Java Basics - Anfänger-Themen 5
A Problem mit Iterator Java Basics - Anfänger-Themen 2
B Türme von Hanoi - Iterator Java Basics - Anfänger-Themen 50
V Hilfe beim implementieren von Iterator Java Basics - Anfänger-Themen 5
W Collections Iterator<E> Java Basics - Anfänger-Themen 7
L Lokale Variable und Instanzvariable innerhalb Iterator Java Basics - Anfänger-Themen 8
W OOP problem mit iterator! -.- Java Basics - Anfänger-Themen 9
B Iterator und Collection Java Basics - Anfänger-Themen 11
ruutaiokwu Iterator oder .size ??? Java Basics - Anfänger-Themen 6
vandread Iterator zählt nicht hoch?! Java Basics - Anfänger-Themen 3
L Problem mit Iterator bzw. Sortierte Liste Java Basics - Anfänger-Themen 14
N HashMap mit Iterator durchlaufen Java Basics - Anfänger-Themen 11
R Iterator Liste, Verständnisproblem Java Basics - Anfänger-Themen 4
J Verschachtelte for-Schleife mit Löschen von Iterationen. Wie über Iterator abbilden? Java Basics - Anfänger-Themen 6
M Iterator Java Basics - Anfänger-Themen 15
L Implementation gesucht - ArrayList.iterator() Java Basics - Anfänger-Themen 3
M Eigener Iterator für LinkedList Java Basics - Anfänger-Themen 20
pun Iterator über ArrayList Java Basics - Anfänger-Themen 12
P Iterator.add() Java Basics - Anfänger-Themen 3
A For Schleife - Iterator wird null Java Basics - Anfänger-Themen 7
? Map und iterator Java Basics - Anfänger-Themen 11
0x7F800000 ungereimtheiten mit Iterator/ListIterator Java Basics - Anfänger-Themen 2
N "Dynamischer" Iterator Java Basics - Anfänger-Themen 21
J Iterator remove()? Java Basics - Anfänger-Themen 5
T Liste mit Iterator auslesen Java Basics - Anfänger-Themen 11
Kr0e Iterator Java Basics - Anfänger-Themen 2
D iterator instanziieren! Java Basics - Anfänger-Themen 11
M Der Umgang mit Iterator - Wie ein Objekt aus einer ArrayList Java Basics - Anfänger-Themen 2
J ArrayList mit Iterator Java Basics - Anfänger-Themen 3
W Iterator in Queue Java Basics - Anfänger-Themen 5
A Für was Iterator ? Java Basics - Anfänger-Themen 3
M warum interface iterator verwendbar? Java Basics - Anfänger-Themen 5
O Iterator - Durchlauf "einschränken" bzw. steuern&q Java Basics - Anfänger-Themen 2
K Collection und Iterator Java Basics - Anfänger-Themen 7
Q Iterator next erstellen Java Basics - Anfänger-Themen 4
S iterator problem Java Basics - Anfänger-Themen 3
S Iterator --__-- Zugriff auf nächstes Element Java Basics - Anfänger-Themen 5
N Set + Iterator oder doch nur zu blöd API zu lesen Java Basics - Anfänger-Themen 32
R Java 5.0 neue For schleife Iterator was ist der fehler? Java Basics - Anfänger-Themen 5
N generische HashMap und Iterator Java Basics - Anfänger-Themen 2
R Iterator und HashMap Java Basics - Anfänger-Themen 10
G Probleme mit Iterator Java Basics - Anfänger-Themen 2
E umgededrehte if anweisung funzt nicht , iterator. Java Basics - Anfänger-Themen 2
A Iterator, wie funkioniert das richtig? Java Basics - Anfänger-Themen 6
S Iterator Schreibweise Java Basics - Anfänger-Themen 7
P ArrayList, iterator: Fehler in while Schleife Java Basics - Anfänger-Themen 2
T Iterator Java Basics - Anfänger-Themen 8
G Frage zur Iterator ? Java Basics - Anfänger-Themen 12
A Iterator auf anfang setzen Java Basics - Anfänger-Themen 5
blackfeet Bildfadeffekt (Halptransparenz) & iterator Java Basics - Anfänger-Themen 8
C Problem mit verschachteltem Iterator Java Basics - Anfänger-Themen 2
R Problem mit Iterator Java Basics - Anfänger-Themen 6
M Problem mit Iterator.remove() Java Basics - Anfänger-Themen 5
R Enumeration oder Iterator? Java Basics - Anfänger-Themen 2
J Klasse Iterator Java Basics - Anfänger-Themen 5
D unregelmäßige NullPointerException bei LinkedList Iterator? Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben