Skip to main content

Java Übung 15 – Besuche den Java Schwimmkurs

In dieser Java Übung geht es noch einmal um das switch case statement.

Und es geht um Eintrittspreise im Schwimmbad.
Diese Eintrittspreise sind gestaffelt nach dem Wochentag, welchem du im Schwimmbad verbringst.

Am Tag 1 bezahlst du 4,5 Euro.
Am Tag 2 bist du bei 6 Euro.
Am Tag 3 kostet es 7 Euro
Und Tag 4 bis 7 kosten die Tageskarten 8 Euro.

Schreibe eine Methode, namens „berechnePreis“.
Diese Methode erwartet zwei Argumente.
Das erste Argument ist eine Zahl.
Diese Zahl entspricht dem Wochentag. Also 1 bis 7.

Das zweite Argument ist ein boolean.
Was wertet dieser aus?
Wenn dieser wahr ist, dann bist du nicht nur diesen einen Tag im Schwimmbad.
Nein du bist die darauffolgenden Tage ebenfalls da.

Das heißt.
Wenn du der Methode Tag 4 übergibst und den Wert „true“.
Dann bedeutet das: Du bist am Tag 4, Tag 5, Tag 6 und Tag 7 im Schwimmbad.
Die Methode darf dann nicht aus dem switch-Block herausspringen.

Anders ist es, wenn false übergeben wird.
Dann soll die Methode aus dem Block herausspringen und dir nur noch den Preis von diesem einen Tag zurückgeben.

Egal ob true oder false:
Die Methode soll zum Schluss die entsprechenden Gesamtpreise zurückgeben.

Löse diese Java Übung mit dem Switch-Case-Statement.
Und setze dafür gezielt die break-Anweisung ein.

PS.
Alle Werte, welche größer als 7 sind, soll die Methode abfangen.
Dann erscheint die Anzeige „An diesem Tag- Leider geschlossen.“


Bevor du diese Java Übung lösen kannst, lege eine Klasse an

Ich nenne meine Klasse schlichtweg Schwimmbad.

Die Parameterliste der Java Methode erwartet zwei Argumente.

  • boolean „mehrereTage“
  • int „ersterTag“

Die Preise führe ich als lokale Variablen vom Datentyp double.

So würde die Methode erst einmal aussehen:


public class Schwimmbad {
 
static void berechnePreis(boolean mehrereTage, int ersterTag) {
double preisTag1 = 4.5;
double preisTag2 = 6;
double preisTag3 = 7;
double preisTag4 = 8;
double gesamtpreis = 0;
}
}

Als nächstes sollte der boolean Wert überprüft werden.
if (mehrereTage == false)
Wenn dieser false ist, dann wird nur der eine Tag abgerechnet.
Also switche dann das Argument ersterTag und vereinbare die entsprechenden Cases.
Wichtig ist die Breakanweisung.

Denn jetzt soll jedes Mal genau der eine Tageswert zurückgeben und dann aus der Methode gesprungen werden.


public class Schwimmbad {
 
static void berechnePreis(boolean mehrereTage, int ersterTag) {
double preisTag1 = 4.5;
double preisTag2 = 6;
double preisTag3 = 7;
double preisTag4 = 8;
double gesamtpreis = 0;
if (mehrereTage == false) {
switch (ersterTag) {
case 1:
System.out.println("Tag 1 - Preis: " + preisTag1);
gesamtpreis = preisTag1;
break;
case 2:
System.out.println("Tag 2 - Preis: " + preisTag2);
gesamtpreis = gesamtpreis + preisTag2;
break;
case 3:
System.out.println("Tag 3 - Preis: " + preisTag3);
gesamtpreis = gesamtpreis + preisTag3;
break;
case 4:
System.out.println("Tag 4 - Preis: " + preisTag4);
gesamtpreis = gesamtpreis + preisTag4;
break;
case 5:
System.out.println("Tag 5 - Preis: " + preisTag4);
gesamtpreis = gesamtpreis + preisTag4;
break;
case 6:
System.out.println("Tag 6 - Preis: " + preisTag4);
gesamtpreis = gesamtpreis + preisTag4;
break;
case 7:
System.out.println("Tag 7 - Preis: " + preisTag4);
gesamtpreis = gesamtpreis + preisTag4;
break;
default:
System.out.println("An diesem Tag- Leider geschlossen.");
break;
}
}
System.out.println("Gesamtpreis: " + gesamtpreis);
}
 
public static void main(String[] args) {
berechnePreis(false, 3);
}
}

Die Methode hakt in den entsprechenden Case ein und führt die Anweisungen aus.
Der Gesamtpreis wird zwar jedes Mal berechnet.

Aber dieser ergibt sich aus dem Tagespreis und dem Wert 0.

Jetzt lass uns die true-Werte anschauen.
Also else Bedingung setzen.
Cases vereinbaren
Und keine break-Anweisung einsetzen.


public class Schwimmbad {
 
static void berechnePreis(boolean mehrereTage, int ersterTag) {
double preisTag1 = 4.5;
double preisTag2 = 6;
double preisTag3 = 7;
double preisTag4 = 8;
double gesamtpreis = 0;
if (mehrereTage == false) {
switch (ersterTag) {
case 1:
System.out.println("Tag 1 - Preis: " + preisTag1);
gesamtpreis = preisTag1;
break;
case 2:
System.out.println("Tag 2 - Preis: " + preisTag2);
gesamtpreis = gesamtpreis + preisTag2;
break;
case 3:
System.out.println("Tag 3 - Preis: " + preisTag3);
gesamtpreis = gesamtpreis + preisTag3;
break;
case 4:
System.out.println("Tag 4 - Preis: " + preisTag4);
gesamtpreis = gesamtpreis + preisTag4;
break;
case 5:
System.out.println("Tag 5 - Preis: " + preisTag4);
gesamtpreis = gesamtpreis + preisTag4;
break;
case 6:
System.out.println("Tag 6 - Preis: " + preisTag4);
gesamtpreis = gesamtpreis + preisTag4;
break;
case 7:
System.out.println("Tag 7 - Preis: " + preisTag4);
gesamtpreis = gesamtpreis + preisTag4;
break;
default:
System.out.println("An diesem Tag- Leider geschlossen.");
break;
}
} else {
switch (ersterTag) {
case 1:
System.out.println("Tag 1 - Preis: " + preisTag1);
gesamtpreis = preisTag1;
case 2:
System.out.println("Tag 2 - Preis: " + preisTag2);
gesamtpreis = gesamtpreis + preisTag2;
case 3:
System.out.println("Tag 3 - Preis: " + preisTag3);
gesamtpreis = gesamtpreis + preisTag3;
case 4:
System.out.println("Tag 4 - Preis: " + preisTag4);
gesamtpreis = gesamtpreis + preisTag4;
case 5:
System.out.println("Tag 5 - Preis: " + preisTag4);
gesamtpreis = gesamtpreis + preisTag4;
case 6:
System.out.println("Tag 6 - Preis: " + preisTag4);
gesamtpreis = gesamtpreis + preisTag4;
case 7:
System.out.println("Tag 7 - Preis: " + preisTag4);
gesamtpreis = gesamtpreis + preisTag4;
break;
default:
System.out.println("An diesem Tag- Leider geschlossen.");
break;
}
}
System.out.println("Gesamtpreis: " + gesamtpreis);
}
 
public static void main(String[] args) {
berechnePreis(false, 3);
}
}

Aufgrund des fehlenden Breaks, springt das Programm in den entsprechenden Case und führt diesen und alle nachfolgenden aus.
Der entsprechende Gesamtpreis durchläuft auch alle Fälle und wird somit immer wieder erhöht.

Und dann ganz zum Schluss bekommst du den Gesamtpreis zurückgegeben.
Cool oder. 🙂


Ähnliche Beiträge

Java Strings landen im String Constant Pool

Java-Strings-Pool

Du kennst das. Es ist abends. Du sitzt gemütlich vor dem Fernseher. Das Smartphone bimmelt. Kein Anruf. Nein – Eine Nachricht. Du liest die Nachricht sofort und antwortest darauf. Minuten später bekommst du die nächste Nachricht. Und auch auf diese antwortest du. Im Laufe des Abends entsteht daraus eine nette kleine Konversation. Und eh du […]

Lexikalik, Syntax und Semantik in Programmiersprachen

Programmiersprachen Semantik Programmiersprachen Syntax Programmiersprachen Lexikalik Java

Java ist eine Programmiersprache. Und wie jede andere Programmiersprache ist auch Java, lediglich eine künstliche Sprache.   Normalerweise bieten künstliche Projekte immer jede Menge Spielraum für Eigenkreationen. Bei der Programmierung ist dies nicht ganz so. Denn Programmiersprachen sind auch immer sehr exakt.   Jede Programmiersprache und auch jede gesprochene Sprache folgt immer einer Abstraktionsreihenfolge, welche […]

Ohne Abstraktion ergibt Java Polymorphie wenig Sinn

Java Polymorphie Abstraktionsprinzip

Kennst du den Film Matrix? Denn kennst du vielleicht auch die Botschaft, welche der Protagonist am Anfang des Filmes erhält. „Folge dem weißen Kaninchen.“ Und so ähnlich ist es jetzt auch in diesem Beitrag. „Wir dringen immer tiefer in den Kaninchenbau ein.“ 🙂 Ganz so wie im Film wird es nicht. Aber bevor wir mit […]

Das Instanzieren von Java Klassen verhindern

Java Objekte Instanzieren verhindern

Die Instanzierung von Java Klassen verhindern. Was heißt das? Instanzen sind die Objekte einer Java Klasse. Und Instanzieren oder Instanzierung heißt nichts anderes, als Objekterstellung. Aber was soll das? Oder mal anders gefragt: Wieso sollte man verhindern, dass eine Java Klasse – Objekte erstellen kann? Schließlich sind doch Objekte der Sinn und Zweck jeder objektorientierten […]

So richtest du einen Schreibschutz für deine Java Variablen ein

Stell dir vor: Du hast erfolgreich dein erstes Programm für die Personalabteilung aufgesetzt. Du hast deine ersten 1000 Datensätze schön sauber angelegt. Und nun kommt dein Kollege und überschreibt die Vornamen der ersten 100 Mitarbeitern. Na schöne Sch…. 🙂 Wie kann das passieren? Wie kann man das verhindern? Du brauchst eigentlich nur deine Java Variablen […]

So kannst du in Java Und Verknüpfung anlegen und auswerten

Java Und

In Java stehen dir eine Menge Operatoren zur Verfügung. Einer dieser Operatoren ist der Und-Operator. Dies ist ein logischer Operator, da dieser sogenannte Wahrheitswerte mit einander verknüpft. Also…. Was erwartet dich in diesem Beitrag? Zuerst möchte ich dir die Aussagenlogik hinter dem Und-Operator zeigen. Also wann sind Aussagen wahr und wann sind diese falsch. Dann […]

Java Konsolenausgaben mit formatierten Zahlen

Java Konsolenausgaben Zahlen

Java Konsolenausgaben erzeugst du mit der System.out.println()-Anweisung. Dies ist relativ einfach. Aber es ist mitunter nicht ganz praktisch. Und zwar immer dann, wenn Zahlen im Spiel sind. Die Zahlen welche dann auf deiner Java Konsole erscheinen, sind unformatiert. Sie haben zu viele Kommastellen. Oder für eine bessere Darstellung benötigst du den Tausenderpunkt. Vielleicht möchtest du […]