Seite 3 von 4

Re: Fragen zur Hausuebung 10

Verfasst: 24. Jan 2008 15:29
von Wambolo
Die inventorys sind das Inventar, also einfach alle Videos, Audios und Bücher, diese sind in StoreManager.audioCDs usw gespeichert, also in den 3 Vektoren. Die Daten werden also nicht im Binärbaum aus der Gruppenübung gespeichert. Benutze einfach die Vektoren für deine Methoden.

Re: Fragen zur Hausuebung 10

Verfasst: 24. Jan 2008 20:02
von Krümelmonster
s!mon hat geschrieben:Bin grad am Implementieren der toString-Methode. Hier drin mache ich so etwas:

Code: Alles auswählen

for(StockItem i: s) {
		  rString += i.toString() + System.getProperty("line.Separator");
	  }
Es wird also immer die schon implementierte toString-Methode der StockItems genommen. Die sieht so aus:

Code: Alles auswählen

String.valueOf(this.getID()).concat(", ").concat(this.getName()).concat(", ").concat(this.getClass().getName());
Ich verstehe absolut nicht, wieso ich dann als Ausgabe so etwas erhalte:

Code: Alles auswählen

[1, CD, Stockkeeping.AudioCD, 1, Buch, Stockkeeping.Book, 1, Babab, Stockkeeping.Book]
Wieso werden die einzelnen Items durch Kommas getrennt und nicht durch Zeilenumbrüche, und wieso wird das ganze durch [ ] begrenzt? Ist mir grad ein absolutes Rätsel.. wo diese Teile des Strings herkommen..
Ich glaube du rufst toString() nicht auf einem StockItem Objekt, sondern auf einer Collection auf.

Es ist mir bei der Testdatei für die Übung aufgefallen, dass

Code: Alles auswählen

System.out.println(sm.filter(new FilterName()));
z.B. auch eine Ausgabe mit eckigen Klammern ausgibt.

Die toString() Methode bei Collections ruft wohl die toString Methode
der enthaltenen Objekte auf und verbindet die Ausgaben mit Kommata.

Re: Fragen zur Hausuebung 10

Verfasst: 24. Jan 2008 20:06
von s!mon
Jo dank dir, hatte sich mittlerweile schon erledigt..

Re: Fragen zur Hausuebung 10

Verfasst: 25. Jan 2008 02:32
von Mutalisk
Ich komm mit der Hausübung überhauptnicht zurecht.

Direkt nach dem Einbinden:

In jeder Datei:
The declared package "Stockkeeping" does not match the expected package ""

In der test.java
StockTree cannot be resolved to a type

Irgentwann hatte ich mal ne Anweisung gelesen, dass man ein Package einbinden soll... aber irgentwie finde ich es net mehr...

Wurden die Infos zu der Hausübung geändert?

Re: Fragen zur Hausuebung 10

Verfasst: 25. Jan 2008 07:26
von Krümelmonster
The declared package "Stockkeeping" does not match the expected package ""
Du hast die Dateien im Standardpackage liegen. Erstelle ein neues Package "Stockkeeping" und
schiebe die Dateien da rein.
StockTree cannot be resolved to a type
Die Datei StockTree ist nicht im Template enthalten, da sie Aufgabe von eCommerce (1) war.
Den Quellcode findest du in der Lösung des Präsenzteils auf der GdI1 Seite (oder im Anhang ;) )

Re: Fragen zur Hausuebung 10

Verfasst: 26. Jan 2008 16:09
von xilef
Mutalisk hat geschrieben: In jeder Datei:
The declared package "Stockkeeping" does not match the expected package ""
Die Möglichkeit von meinem Vorredner ist gut. Analog kannst du die Dateien im Standardpaket belassen wenn du an ihrem Anfang die package Deklaration entfernst.

Stellt sich allerdings die Frage, ob dadurch die Test der Tutoren verhagelt werden? ( was der eigentliche Grund für meinen Post ist.)

Re: Fragen zur Hausuebung 10

Verfasst: 26. Jan 2008 16:14
von Krümelmonster
An den Templates sollte laut meinem Tutor eigentlich nichts verändert werden.
Weder Methoden-, Attributsnamen noch deren Sichtbarkeit. Da ein package auch
eine Form der Sichtbarkeit darstellt, fällt das Ändern des Packages wohl auch in
die Kategorie "Finger davon lassen". ;)

Re: Fragen zur Hausuebung 10

Verfasst: 26. Jan 2008 16:38
von C0RNi666
Krümelmonster hat geschrieben:An den Templates sollte laut meinem Tutor eigentlich nichts verändert werden.
Weder Methoden-, Attributsnamen noch deren Sichtbarkeit. Da ein package auch
eine Form der Sichtbarkeit darstellt, fällt das Ändern des Packages wohl auch in
die Kategorie "Finger davon lassen". ;)
gut das du das ansprichst.

Im Interface IStoreManager2 wirft mir Eclipse bei

Code: Alles auswählen

<Type1,Type2,Type3> Collection<T> mergeInventory(Collection<Type1> firstStock, Collection<Type2> secondStock);
"T cannot be resolved to a type" als fehler aus :|

Suggeriert das nich, T an dieser Stelle mit einem bekannten Typ deklarieren, damit ich das interface in StoreManager implementieren kann? Dazu muss ich aber schon das Template ändern oder?

Solange der Fehler von Eclipse ausgegeben wird, ist es z.b auch nicht möglich in der class StoreManager die methode automatisch einbinden zu lassen.

Re: Fragen zur Hausuebung 10

Verfasst: 26. Jan 2008 16:42
von Krümelmonster
Klar, wie Dr. Rößling ja schon gesagt hat, ist es ja gerade Sinn der Aufgabe die passenden Typen zu finden.

Re: Fragen zur Hausuebung 10

Verfasst: 26. Jan 2008 16:57
von guido
Krümelmonster hat geschrieben:Klar, wie Prof. Rößling ja schon gesagt hat, ist es ja gerade Sinn der Aufgabe die passenden Typen zu finden.
Genau -- nur dass ich "nur" Dr. bin :)

Guido

Re: Fragen zur Hausuebung 10

Verfasst: 26. Jan 2008 17:12
von Krümelmonster
Ups, kommt nicht wieder vor. :oops:

Re: Fragen zur Hausuebung 10

Verfasst: 27. Jan 2008 14:20
von caesar
Ich hätte auch nochmal eine Frage zur toString()

Mein Code sieht bis jetzt so aus:

Code: Alles auswählen

  public String toString()
  { 
	  for(StockItem element: c)
		  {
		  	System.out.println(element);
		  }
  }
Warum wird bei mir aber das "c" als Fehler (c cannot be resolved) markiert?

Re: Fragen zur Hausuebung 10

Verfasst: 27. Jan 2008 15:15
von Stumpf.Alex
Weil die Variable c nirgends deklariert ist... :wink:

Re: Fragen zur Hausuebung 10

Verfasst: 27. Jan 2008 15:32
von caesar
wofür brauche ich denn das c überhaupt, auf der Folie von der GDI-Seite ist es ja nicht wirklich toll erklärt, und wo deklariere ich es am besten?

Re: Fragen zur Hausuebung 10

Verfasst: 27. Jan 2008 15:42
von Krümelmonster
Die Syntax der foreach Schleife ist folgendermaßen:
for(Type element : list)

Type ist hierbei der Typ der Elemente, die in der Liste list enthalten sind.
Dabei wird bei jedem Durchlauf das nächste Element in der Liste mit element referenziert.

Die Schleife macht nichts anderes als ein.

Code: Alles auswählen

for(int i=0; i<list.length(); i++) {
...list.get(i)...
}
Intern kompiliert Java eine foreach Schleife als normale for Schleife um die Kompatibilität mit
vorherigen Versionen nicht zu verlieren.

Wenn du also z.B. den audioCDs Vektor durchlaufen willst, dann sieht die passende foreach Schleife so aus:

Code: Alles auswählen

for(AudioCD cd : audioCDs)