Übung05

Moderator: AI 2

m_flaig
Moderator
Moderator
Beiträge: 272
Registriert: 27. Sep 2009 14:02

Übung05

Beitrag von m_flaig »

Hier können Sie Fragen zu Übung05 stellen oder zu Themen, die in Übung05 behandelt wurden.

qwertz
Neuling
Neuling
Beiträge: 1
Registriert: 14. Jun 2014 12:34

Übung 5, Aufgabe 2b

Beitrag von qwertz »

Hallo,
eine Frage zur Übung 5, genauer gesagt Aufgabe 2b:

Ich bin der Meinung die Aufgabenstellung ist nicht präzise genug.
Soll man den Standard Iterator benutzen? Oder seinen eigenen schreiben?

m_flaig
Moderator
Moderator
Beiträge: 272
Registriert: 27. Sep 2009 14:02

Re: Übung 5, Aufgabe 2b

Beitrag von m_flaig »

Hallo,

wenn nicht anders vorgegeben, dann können Sie immer den Standard Iterator der Java Collections nutzen.
Zu Übungszwecken können Sie natürlich auch gerne einen eigenen Iterator schreiben :wink:

Viele Grüße,
M.Flaig

m_flaig
Moderator
Moderator
Beiträge: 272
Registriert: 27. Sep 2009 14:02

Re: Übung05

Beitrag von m_flaig »

Eine Musterlösung ist ab sofort in moodle verfügbar.

Holly19
Erstie
Erstie
Beiträge: 21
Registriert: 18. Mai 2014 12:15

Re: Übung 5, Aufgabe 2b

Beitrag von Holly19 »

Hi,
ich habe eine Frage zur Musterlösung der Aufgabe: in der temp-Variablen wird iter.next() gespeichert, also der Wert der Variablen, die nach der Variablen kommt, auf die der Iterator momentan verweist. Aber müsste nicht der Wert der Variablen gepeichert werden, auf die der Iterator momentan verweist? Schließlich soll doch diese dupliziert werden oder nicht?
Vielen Dank und liebe Grüße!

m_flaig
Moderator
Moderator
Beiträge: 272
Registriert: 27. Sep 2009 14:02

Re: Übung 5, Aufgabe 2b

Beitrag von m_flaig »

Ich hab nun nicht in der MuLö nachgeschaut, aber evtl. löst diese Antwort schon Ihr Problem:

Kurz zum Iterator:
Die aktuelle Position befindet sich jeweils zwischen zwei Elementen, also am Anfang auf 0 VOR dem ersten Element der Liste, nach dem ersten Aufruf von next() auf Position 1, das heißt zwischen Element 0 und Element 1 der Liste, so dass beim zweiten Aufruf von next() das Element Nummer 1 (das zweite Element der Liste) zurückgegeben wird - genau so, wie man es erwarten würde. Man kann sich den Iterator also wie einen Cursor vorstellen =)

Wenn noch Unklarheiten sind, scheuen Sie nicht zu fragen =)

VG,
M.Flaig

Holly19
Erstie
Erstie
Beiträge: 21
Registriert: 18. Mai 2014 12:15

Re: Übung 5, Aufgabe 2b

Beitrag von Holly19 »

Das heißt also, dass der Iterator nach dem ersten Aufruf von next() das erste Element der Liste zurückliefert?

m_flaig
Moderator
Moderator
Beiträge: 272
Registriert: 27. Sep 2009 14:02

Re: Übung 5, Aufgabe 2b

Beitrag von m_flaig »

Holly19 hat geschrieben:Das heißt also, dass der Iterator nach dem ersten Aufruf von next() das erste Element der Liste zurückliefert?
Genau! =)

PhK
Neuling
Neuling
Beiträge: 2
Registriert: 15. Jun 2014 20:07

Re: Übung05

Beitrag von PhK »

Hi,
ich hab eine kleine Frage zur Musterlösung 2b)

Code: Alles auswählen

	//Get through the list using an iterator.
	//This is only an example to understand the theoretical approach.
	//In practice, it doesnt work, because the duplicated elements
	//are not add to the list (exampleList).

	public void duplicateEveryListElem(ListElem input){
		Iterator<ListElem> iter = exampleList.iterator();
		while(iter.hasNext()){
			ListElem temp = iter.next();
			ListElem newElem = new ListElem();
			newElem.content = temp.content;
			newElem.next = temp.next;
			temp.next = newElem;
			temp = newElem.next;
		}
	}
Bis zur letzten Zeile versteh ich was getan wird.
Was hat die letzte Zeile (temp = newElem.next) für eine Aufgabe? Im nächsten durchlauf der while-Schleife wird temp ja sofort wieder überschrieben, bzw neu Initalisiert oder?

Grüße
Philipp

Holly19
Erstie
Erstie
Beiträge: 21
Registriert: 18. Mai 2014 12:15

Re: Übung 5, Aufgabe 2b

Beitrag von Holly19 »

Super, danke für die Antwort! :)

Ich hab noch eine Frage zum Iterator:
wenn ich bspw. folgenden Code habe:
ListElem beispiel = new ListElem();
beispiel.content1 = it.next().content1;
beispiel.content2 = it.next().content2;

content1 und content2 sind hierbei Attribute des ListElem-Objekts. Stimmt es, dass das Objekt beispiel die beiden Attributwerte nicht vom selben Objekt erhält? Ich dachte mir nämlich, dass der Iterator ja weitergeht und somit content2 das Attribut von dem Objekt ist, das auf das Objekt folgt, welches den Wert für content1 liefert...

m_flaig
Moderator
Moderator
Beiträge: 272
Registriert: 27. Sep 2009 14:02

Re: Übung05

Beitrag von m_flaig »

PhK hat geschrieben: Was hat die letzte Zeile (temp = newElem.next) für eine Aufgabe?
Keine.. :mrgreen:
PhK hat geschrieben:Im nächsten durchlauf der while-Schleife wird temp ja sofort wieder überschrieben, bzw neu Initalisiert oder?
Genau 8)

Überlesen Sie einfach die letzte Zeile :oops:

VG,
M.Flaig

m_flaig
Moderator
Moderator
Beiträge: 272
Registriert: 27. Sep 2009 14:02

Re: Übung 5, Aufgabe 2b

Beitrag von m_flaig »

Holly19 hat geschrieben:Super, danke für die Antwort! :)
Immer gern! :mrgreen:
Holly19 hat geschrieben: Stimmt es, dass das Objekt beispiel die beiden Attributwerte nicht vom selben Objekt erhält? Ich dachte mir nämlich, dass der Iterator ja weitergeht und somit content2 das Attribut von dem Objekt ist, das auf das Objekt folgt, welches den Wert für content1 liefert...
Ja das stimmt. Am Besten auch einfach mal selbst programmieren, dann versteht man es mit ein bisschen herumprobieren am Besten =)

VG,
M.Flaig

Holly19
Erstie
Erstie
Beiträge: 21
Registriert: 18. Mai 2014 12:15

Re: Übung05

Beitrag von Holly19 »

Dankeschön auch für diese Antwort :)

ratatam
Erstie
Erstie
Beiträge: 14
Registriert: 30. Apr 2014 16:35

Re: Übung05

Beitrag von ratatam »

Hallo,

Frage zu Aufgabe 2a):

Muss in der Methode unbedingt ein Objekt erzeugt werden, das dann in die Liste eingehängt wird, oder würde es auch ausreichen, eine Variable auf den Inhalt von helpPointer referenzieren zu lassen und diese dann zu integrieren?
Also innerhalb der while-Schleife dann einfach:

while (helpPointer != null){
ListElem newElem = helpPointer;
//newElem.content = helpPointer.content; // diese Zeile und die nächste wären dann überflüssig
//newElem.next = helpPointer.next;
helpPointer.next = newElem;
helpPointer = newElem.next;
}

Grüße

ratatam
Erstie
Erstie
Beiträge: 14
Registriert: 30. Apr 2014 16:35

Re: Übung05

Beitrag von ratatam »

Hallo,

und noch eine zweite Frage, diesmal zu 2b).
Benötigt die Mehtode nicht "exampleList" als Parameter (statt input wie in 2a))?

Grüße

Antworten

Zurück zu „AI 2“