Die Ausgabemethode
Lösung geprüft
Die Aufgabe der heutigen Stunde ist die Ausgabemethode! Bis jetzt holen wir uns jeden Wert einzeln mit einem Getter raus und bauen die Ausgabe im Autohaus zusammen. Das ist auf Dauer nervig. Besser: das Auto sagt selber, wie es sich beschreibt.
Die Methode ist schon halb vorgegeben, sie hört nur mittendrin auf – und zwar so, dass sie in dem Zustand nicht mal kompiliert. Das ist kein Versehen vom Lehrer, das ist die Aufgabe.
Ergänze die Klasse Auto um eine weitere Methode
ausgabe. Die Ausgabe ist noch nicht fertig. Ergänze die
Ausgabe: Das Tankvolumen, der Kraftstoffverbrauch und die aktuelle
Kraftstoffmenge sollen auch ausgegeben werden.
Was vorgegeben ist
public void ausgabe() {
String info = "Auto: " + Kennzeichen + "\n"
+ " Kilometerstand: " + Kilometerstand + " km\n";
//Weiter schreiben, vorher das Semikolon entfernen <-
System.out.println(info);
}
Der Kommentar sagt dir genau, wo der Haken liegt: hinter der zweiten Zeile steht ein Semikolon. Damit ist die Zuweisung zu Ende. Wenn du einfach darunter weiterschreibst, meckert der Compiler. Das Semikolon muss also ans Ende der letzten Zeile wandern.
Lösungsprozess der Aufgabe
/**
*
* Die Ausgabemethode der Klasse Auto
*
* @version 1.0 vom 13.09.2025
* @meininfokurs.cmrg.site
*/
public void ausgabe() {
String info = "Auto: " + Kennzeichen + "\n"
+ " Kilometerstand: " + Kilometerstand + " km\n"
+ " Tankvolumen: " + Tankvolumen + " l\n"
+ " Kraftstoffverbrauch: " + Kraftstoffverbrauch + " l/100km\n"
+ " Kraftstoffmenge: " + InOut.format2(Kraftstoffmenge) + " l";
System.out.println(info);
}
In der Aufgabenstellung wird gefordert, dass wir folgende Sachen umsetzen:
- Das Semikolon an das Ende der Zuweisung verschieben
- Das Tankvolumen mit ausgeben
- Den Kraftstoffverbrauch mit ausgeben
- Die aktuelle Kraftstoffmenge mit ausgeben
Das Semikolon
Java interessiert sich nicht für Zeilenumbrüche. Eine Anweisung geht so lange weiter, bis ein Semikolon kommt. Deshalb darf man einen langen String über mehrere Zeilen zusammenbauen – das Semikolon steht nur ganz am Schluss. Genau das macht den Code hier lesbar: jede Zeile der späteren Ausgabe steht auch im Code in einer eigenen Zeile.
Konkatenation und \n
Das + zwischen Strings ist keine Addition, sondern
Aneinanderhängen. Das nennt sich Konkatenation. Sobald einer der beiden
Teile ein String ist, wird auch der andere in Text umgewandelt –
deshalb können wir den double Kilometerstand einfach
drankleben, ohne ihn vorher umzuwandeln.
\n ist ein Zeilenumbruch innerhalb des Strings.
Wir bauen also einen einzigen langen Text, der mehrere Zeilen enthält,
und geben den am Ende mit einem
System.out.println aus.
Warum nur ein println am Ende
Genau darum geht es bei der Aufgabe eigentlich: das EVA-Prinzip.
Eingabe, Verarbeitung, Ausgabe – und zwar in dieser Reihenfolge und
sauber getrennt. Wir sammeln erst alles in der Variable
info ein (Verarbeitung) und geben dann einmal aus
(Ausgabe). Fünf einzelne println würden dasselbe auf dem
Bildschirm produzieren, vermischen aber beides.
Das klingt nach Erbsenzählerei, wird aber später wichtig: wenn du den Text irgendwann nicht mehr in die Konsole, sondern in ein GUI-Fenster schreiben willst, musst du nur die letzte Zeile ändern statt fünf.
format2 für die Nachkommastellen
Bei der Kraftstoffmenge steht InOut.format2(...) drumherum.
Das rundet auf zwei Nachkommastellen. Ohne das bekommst du nach ein
paar Fahrten Ausgaben wie 23.400000000000002 um die Ohren
gehauen – das ist keine Java-Macke, sondern liegt daran, wie
double Zahlen im Speicher ablegt. Für den Kilometerstand
kannst du das genauso machen.
Und so sieht es dann aus
Auto: WI-AB 123
Kilometerstand: 0.0 km
Tankvolumen: 50.0 l
Kraftstoffverbrauch: 6.5 l/100km
Kraftstoffmenge: 0,00 l
Solange tanken und fahren noch leer sind,
bleiben Kilometerstand und Kraftstoffmenge natürlich bei 0. Das ändert
sich in der nächsten Aufgabe.