Instanzenmethoden

BROker

Mitglied
Hallo Community,
ich bin neu hier und habe Probleme bei folgender Aufgabe die ich im Anhang verlinken werde.
Momentan geht es mir nur um den (a) und den (b) Teil der Aufgabe.
Zum (a) Teil:Hier habe ich soweit glaube ich alles. Aber ich verstehe nicht was die Methode toString(int roeLength) machen soll. Desweiteren verstehe ich nicht was mit dem Überladen der toString Methode gemeint ist. Soll man hier eine neue toString Methode erstellen?
Zum(b) Teile:Hier habe ich ein Problem mit der Method readResults Und zwar weise ich die Notenwerte in der for Schleife zu aber ich weiss nicht wie ich diese Attributwerte in den zugehörigen Instanzen der Klasse Fach setze.
Anbei: Meinen bisherigen Code werde ich auch in den Anhang packen
PS: Habe mir den Code jetzt nochmal angeschaut und habe einen fehler in den get MEthoden entdeckt und zwar haben get Methoden ja einen rückgabewert und das habe ich jetz verbessert
Gruß und danke schonmal im voraus
 

Anhänge

  • P7.pdf
    127,7 KB · Aufrufe: 14
  • Fach.java
    117 Bytes · Aufrufe: 8
  • Schueler.java
    32 Bytes · Aufrufe: 6
Zuletzt bearbeitet:

BROker

Mitglied
Ja Aufgabe 3 meinte ich ;)

Klar kann ich sie aktualisieren aber viel ist nicht dazugekommen
Oh... ist doch ein bisschen was dazu gekommen habe eben gemerkt dass ja noch fast nichts in der alten Datei enthalten war :oops:

Vg,
BROker
 
Zuletzt bearbeitet:

BROker

Mitglied
Hier die aktualisierte Version

Ausserdem habe ich mir jetzt mal das Thema deiner Verlinkung durchgelesen allerdings verstehe ich den Sinn, des Überladens von Methoden nicht:
 

Anhänge

  • Fach.java
    878 Bytes · Aufrufe: 8
  • Schueler.java
    645 Bytes · Aufrufe: 6
  • ZeugnisSchreiber.java
    327 Bytes · Aufrufe: 6
Zuletzt bearbeitet:

EasyEagle

Aktives Mitglied
Überladen musst du ja in deiner Aufgabe nicht machen, aber zum Verständnis:
Mehrere Methoden mit der Selben Sigantur, aber unterschiedlichen Übergabeparamertern.
Also z.B.:
Java:
public String write(){
    return "bla";
}
public String write(String bla){
    return bla;
}

Zu deinem Thema:
Die toString hast du ja schon richtig überschrieben, jetzt musst du "nur" noch den entsprechenden Rückgabewert bestimmen. Du sollst dir hier ja einen String mit Hilfe der Methode "umwandeln(...)" in der ensprechenden Länge "rowLength" zusammen basteln.
Ich würde den Fächer-Array nur deklarieren, aber noch nicht definieren (= Wertzuweisung) und die Definition dann erst im Konstruktor vornehmen:
Java:
// im Konstruktor
this.faecher = faecher;
Damit sparrst du dir das umständliche System.arraycopy UND die Länge des Arrays ist damit variabel, also je nach Länge des übergebenen Arrays. Bei deiner Lösung hat faecher immer eine Länge von 4.
Ich seh gerade, dass das auch so in der Aufgabenstellung steht: "... sowie ein Feld von Fächernamen als Parameter besitzt und mit den Parameterwerten die Attributwerte initialisiert."

Das mit der Methode readResults versteh ich ehrlich gesagt auch nicht ganz.
Wie und von wo sollen die Noten EINGELESEN werden?
Ansonsten muss du dort dann in einer Schleife über den faecherArray iterieren und jeweils Konstruktor der Klasse Fach aufrufen und dann vermutlich die überschriebene toString() aufrufen.
 

EasyEagle

Aktives Mitglied
Bei dem Konstruktor der Klasse "Fach" fehlt noch der zweite Übergabeparameter "note".
Außerdem denke ich, dass du keine zwei Attribute für den Namen brauchst (du hast "name" und "nameFach")

EDIT: Nein, sorry. In der Aufgabenstellung steht tatsächlich dass hier nur ein Konstruktor mit dem Attribut für "name" benötigt wird
 
Zuletzt bearbeitet:

BROker

Mitglied
So habe jetzt die Getter Methoden in der Klasse Fach verbessert.
Den Konstruktor habe ich jetzt auch verbessert in dem ich this.faecher=faecher geschrieben habe.
Allerdings frage ich mich jetzt wie ich den SAchulfächer in dem Feld abspeichern kann?
 

BROker

Mitglied
public Fach(String name,float note){
this.name=name;
this.note=note;
}
Und nameFach habe ich jetzt gelöscht!

Die toString hast du ja schon richtig überschrieben, jetzt musst du "nur" noch den entsprechenden Rückgabewert bestimmen. Du sollst dir hier ja einen String mit Hilfe der Methode "umwandeln(...)" in der ensprechenden Länge "rowLength" zusammen basteln.

Das Verstehe ich auch nicht ganz ist rowLength hier nur für die Formatierung wichtig?
 
Zuletzt bearbeitet:

EasyEagle

Aktives Mitglied
Die Fächer werden dem Konstruktor für Schueler übergeben:
Java:
    Schueler tom = new Schueler("Tom", new String[]{"Mathe", "Deutsch", "Physik", "Sport"});
 

BROker

Mitglied
Also genau so wie ich es schon habe?

Java:
Schueler schueler1=new Schueler("Hans Schmidt",new String[]{"Mathematik","Deutsch","Latein","Sport"});
 
Zuletzt bearbeitet:

EasyEagle

Aktives Mitglied
rowLength:
Die toString-Methode soll einen String zurückliefern, der die länge "rowLength" hat.
Der String soll sich wie folgt zusammen setzten: "Fach-Name" (linksbündig) + "Note" (ausgeschrieben und rechtsbündig).
Also musst du schaun wie lang der Name des Faches ist und wieviele Buchstaben die Note hat.
Insgesamt muss der Ausgabe-String die Länge "rowLength" haben, also muss du unter Umständen mit Leerzeichen auffüllen.
 

BROker

Mitglied
Java:
int a= rowLength-noteS.length()-faecher.length();
allerdings kann ich so nicht auf noteS bze faecher zugreifen. Ausserdem weiss ich nicht wie ich die ausgabe mit Leerzeichen auffüllen soll.
Ich bekomme ja einen Wert raus angenommen rowLength=50 und das Worth Mathe hat 5 Buchstaben und die Note gut hat 3 also 50-5-3=42 also müsste ich ja mit 42 Leerzeichen auffülen aber wie soll man das machen?
Java:
System.out.println(Fach:+"42*Leertaste"Note)
 

EasyEagle

Aktives Mitglied
Da würde mir jetzt spontan sowas einfallen:
Java:
[COLOR=#000066][/COLOR][B][COLOR=#000066]    [/COLOR][/B]for(int i = 0; i < a; i++){
        ausgabeString += " ";
    }

Ist vielleicht nicht die eleganteste Lösung, aber dürfte klappen :)
 
Zuletzt bearbeitet:

BROker

Mitglied
Java:
public String toString(int rowLength,String noteS,String faecher){
	int a= rowLength-noteS.length()-faecher.length();
	
	for(int i=1;i<=a;i++){
		String ausgabeString += " ";
	}

		return ausgabeString;
	}

Also so habe ich es jetzt aber das funktioniert nicht!:bahnhof:
 

EasyEagle

Aktives Mitglied
Java:
String ausgabeString = fachName;
int a = rowLength-noteString.length()-fachName.length();
for(int i=0;i<a;i++){
    ausgabeString = ausgabeString + " "; //fügt ein Leerzeichen hinzu
}
ausgabeString = ausgabeString + noteString;

return ausgabeString;
 

Neue Themen


Oben