Autohaus

cpuman990 schrieb:
In der Klasse Autohaus können mit der Methode autoeintragen autos in ein feld abgespeichert werden. Meine Frage wäre jetzt, wenn ich mit dieser Methode in Bluej mehrere Felder mit Daten fülle, ob es möglich ist in die Klasse Kunde eine Methode zu schreiben, bei deren Aufruf man die werte eines Feldes erhält, als System.out.println, sprich dass dann hier z.b. Steht : Marke: ; Motor ; etc. und dann immer die eingetragenen werte ausgegeben werden ?
Ich bin mir nicht sicher dass ich genau verstehe was du meinst. Prinzipiell kannst du in der Kunden Klasse natürlich eine Methode haben die eines der Autos aus dem Autohaus bekommt und über die Konsole ausgibt.
Das könnte zum Beispiel so aussehen:
Code:
public void angebotAusgeben(){
  final Car angebot = autohaus.angebot(0);
  System.out.println(angebot);
}
Dafür bräuchtest du:
- eine Referenz auf das Autohaus im Kunden (oder eine andere Möglichkeit daran zu kommen, zum Beispiel über ein Singleton)
- Eine Methode im Autohaus angebot(int i), die das i-te Angebot zurückgibt
- Eine Methode im Auto toString(), die ein Auto implizit als String darstellen kann. Diese wird automatisch beim Aufruf von System.out.println verwendet.

Was mir gerade in deinem Konzept auffällt ist, dass du eine Klasse Angebot haben solltest, sodass das Auto nicht direkt an den Preis gekoppelt ist sondern nur gegebenenfalls eine unverbindliche Preisempfehlung hat.
 
Die Methode autoeintragen macht nicht das, was du denkst. Schau' dir die erste Zeile nochmal ganz genau an. Und danach die Zweite. Und dann das ganze bitte in [CODE ]-Tags packen.
 
Was ist an der Methode falsch, ich möchte mit dieser Methode, also wenn ich sie in Bluej aufrufe ja ein Auto erzeugen, was dann im Feld abgespeichert wird.
Ergänzung ()

Ok danke, also brauche ich eine Methode in Autohaus die ein Feld in Autohaus zurückgeben kann und um dies zu erreichen, brauche ich eine toString() Methode ? Diese Methode war mir noch nicht bekannt. Wie müsste eine Methode aussehen, die im Autohaus ein Auto(feld) zurückgibt ?
Wenn ich das mit einfach nur Mit System.out.println mache, dann wird sowas wie @xjdjei ausgegeben.
 
cpuman990 schrieb:
Was ist an der Methode falsch, ich möchte mit dieser Methode, also wenn ich sie in Bluej aufrufe ja ein Auto erzeugen, was dann im Feld abgespeichert wird.
Wenn du es so formulierst, stimmt die Methode. Genau genommen: Du kannst höchstens 1 Auto speichern, nie mehr.

cpuman990 schrieb:
Wie müsste eine Methode aussehen, die im Autohaus ein Auto(feld) zurückgibt ?
Wie man auf die einzelnen Elemente eines Arrays zugreift weist du ja. Jetzt musst du nur noch herausfinden, wie man mit einer Methode einen Wert zurückliefern kann. Stichwort return.
 
Ok was müsste ich in meinem Quellcode ändern, damit mehr als nur 1 möglich ist?
Ergänzung ()

Und return möchte ich nicht verwenden, da ich es wie eine Art liste programmieren will in Autohaus die der Kunde abrufen kann.
Hierfür brauche ich wahrscheinlich toString? Aber wie funktioniert das
 
Ich bin eher dafür, dass man selbst herausfinden sollte, warum etwas nicht funktioniert. Dann macht man den Fehler nicht noch mal (oder nicht so oft).
Formulier doch mal in Worten, was die erste Zeile der Methode macht. ;)

Ansonsten verstehe nicht nicht, was du erreichen möchtest. Oben schreibst du noch, du willst ein "Feld" (Auto?) zurückgeben, jetzt willst du es ohne return machen. toString ist übrigens auch eine Methode, die etwas zurückliefert (rate mal, was). Die Methode musst du nicht verwenden, ist aber guter Stil.
 
Also ich komme echt nicht drauf , was falsch ist :D
Ergänzung ()

Ich glaube das problem ist, dass mit jedem methodenaufrauf ein neues feld erstellt wird.
 
Bingo ;)
 
Ok gut, dann wäre das auch gelöst! Wenn ich die toString Methode schreibe bekomme ich \n keinen zeilenumbruch. Beim aufrufen der toString methode wird es auch nicht in dem "zeichenfenster" angezeigt, sondern in einem Fenster Method resuld, was ja auch eigentlich logisch ist, da ich mit return arbeite. Wie kann ich es aber trotzdem im Zeichenfenster darstellen.
 
return erzeugt auch keine Ausgabe, das zeigt dir nur BlueJ so an. Du musst den Rückgabewert von toString ins System.out schreiben, um den im "Zeichenfenster" zu sehen.
 
Wenn ich return.... in die Klammern von System.out.println schreibe, dann meldet er mir einen Fehler ?
 
Richtig. Sollst ja auch den Rückgabewert (das was return bzw. die Methode liefert) und nicht das return selbst da reinschreiben.
 
Ich habe das Gefühl, dass deine toString-Methode nicht da ist, wo sie sein sollte.
Zeig doch mal, was du hast ([CODE ]-Tags nicht vergessen!).
 
public String toString(){
String longString = " Das Auto hat die ID:"+pkwgarage[0].id;
;
longString = longString + "Makre:"+ pkwgarage[0].marke;
longString = longString + "Modellname:" + pkwgarage[0].modell;
longString = longString + "Farbe/Lack:" + pkwgarage[0].farbe;
longString = longString + "Motorausführung:" + pkwgarage[0].motor;
longString = longString + "Ausstattungsbezeichnung:"+pkwgarage[0].ausstattung;
longString = longString + "Maximale Anzahl an Passagieren:" + pkwgarage[0].anzahlsitze;
longString = longString + "Durchschnittsverbrauch:" + pkwgarage[0].verbrauch;
longString = longString + "Felgenausführung:" + pkwgarage[0].felge;
longString = longString + "Gesamtpreis:" + pkwgarage[0].preis;


return (longString);

Diese Methode ist im Autohaus .
Ergänzung ()

Code - Tags ?
 
OK, die Methode gibt jetzt das erste Auto als String zurück (oder schmiert ab, wenn nichts eingeparkt ist). Ich hätte von der Methode jetzt erwartet, dass sie alle geparkten Autos ausgibt, nicht nur das erste. Das ist so nicht unbedingt falsch aber ich erkenne hier dein Problem nicht. Das Problem ist doch eher da, wo du toString vom Autohaus aufrufst.
Schau' dir auch nochmal Post #11 an.

Die Code-Tags kannst du im Editor mit dem #-Symbol einfügen. Das mach das lesen von Code erheblich einfacher.
 
ja die methode ist noch nicht fertig . ich habe erstmal versucht die methode für das 1 feld zu schreiben.
Ergänzung ()

Mein problem gerade ist, dass ich es nicht schaffe den String auf der Zeichenfläche abzubilden.
 
Mit return gibst du Objekte/Werte an eine andere Methode zurück, mit System.out.println() gibst du Werte auf die Konsole aus. System.out.println() kann nicht nur Text ausgeben, sie kann auch den Rückgabewert von anderen Methoden ausgeben. Ein Beispiel dafür findest du in #11 in der main()-Methode.
 
Ok das hier ist wohl gemeint oder ?
System.out.println(maier.anzahl());
System.out.println(maier.bestand.get(0));
Ich verstehen nur nicht wie ich das bei meiner toString methode machen soll. Wenn ich System.out.println(longString) mache, dann funktioniert es nicht. Wie müsste das hier programmiert werden?
 
cpuman990 schrieb:
Wenn ich System.out.println(longString) mache, dann funktioniert es nicht.
Was "funktioniert nicht"? Wird nicht das Erwartete Ausgegeben? Wird eine Exception geworfen?
 
Zurück
Oben