if-Konstrukt durch switch-Konstrukt ersetzen

C

Cookiieee

Mitglied
Hallo, ich wollte fragen, ob ich die Aufgabe richtig gelöst habe.
Danke im Voraus!

Aufgabenstellung:
Das folgende Programm gibt dem Benutzer verschiedene Optionen zur Auswahl.
- Eine Art Menü, aus dem man einzelne Methoden aufruft. -
Das Programm funktioniert wie gegeben, es ließe sich aber durch Verwendung eines switch-Konstrukts verschönern.
Ersetzt das if-Konstrukt entsprechend.
Die Funktionalität soll sich dadurch nicht verändern!

Es darf danach kein if mehr im Code (auch nicht als Kommentar) stehen!


Java:
public class Menu {
        
    public static void main(String [] args) {
        System.out.print("Bitte auswaehlen...\n" +
                         "\tPPR ist [t]oll\n" +
                         "\tPPR [s]tinkt mir\n" +
                         "\tPPR, Flasche [l]eer.\n\n");
        char eingabe = Terminal.readChar();
        if(eingabe == 't') {
            Terminal.println("Wir moegen dich auch.");
        }
        else if(eingabe == 's') {
            Terminal.println("Hauptsache wir stinken geruchstechnisch nicht.");
        }
        else if(eingabe == 'l') {
            Terminal.println("Giovanni, lernst du Programmieren?");
        }
        else {
            Terminal.println("Das stand gar nicht zur Auswahl.");
        }
    }

}

Veränderter Code:


Java:
public class Menu {
        
    public static void main(String [] args) {
        System.out.print("Bitte auswaehlen...\n" +
                   "\tPPR ist [t]oll\n" +
                   "\tPPR [s]tinkt mir\n" +
                   "\tPPR, Flasche [l]eer.\n\n");
        char eingabe = Terminal.readChar();
        switch(switch == 't') {
            Terminal.println("Wir moegen dich auch.");
        }
        else switch(eingabe == 's') {
          Terminal.println("Hauptsache wir stinken geruchstechnisch nicht.");
        }
        else switch(switch == 'l') {
            Terminal.println("Giovanni, lernst du Programmieren?");
        }
        else {
            Terminal.println("Das stand gar nicht zur Auswahl.");
        }
    }


}
 
C

Cookiieee

Mitglied
Hallo, ich wollte fragen, ob ich die Aufgabe richtig gelöst habe.
Danke im Voraus!

Aufgabenstellung:
Das folgende Programm gibt dem Benutzer verschiedene Optionen zur Auswahl.
- Eine Art Menü, aus dem man einzelne Methoden aufruft. -
Das Programm funktioniert wie gegeben, es ließe sich aber durch Verwendung eines switch-Konstrukts verschönern.
Ersetzt das if-Konstrukt entsprechend.
Die Funktionalität soll sich dadurch nicht verändern!

Es darf danach kein if mehr im Code (auch nicht als Kommentar) stehen!


Java:
public class Menu {
       
    public static void main(String [] args) {
        System.out.print("Bitte auswaehlen...\n" +
                         "\tPPR ist [t]oll\n" +
                         "\tPPR [s]tinkt mir\n" +
                         "\tPPR, Flasche [l]eer.\n\n");
        char eingabe = Terminal.readChar();
        if(eingabe == 't') {
            Terminal.println("Wir moegen dich auch.");
        }
        else if(eingabe == 's') {
            Terminal.println("Hauptsache wir stinken geruchstechnisch nicht.");
        }
        else if(eingabe == 'l') {
            Terminal.println("Giovanni, lernst du Programmieren?");
        }
        else {
            Terminal.println("Das stand gar nicht zur Auswahl.");
        }
    }

}

Veränderter Code:

Java:
public class Menu {
       
    public static void main(String [] args) {
        System.out.print("Bitte auswaehlen...\n" +
                   "\tPPR ist [t]oll\n" +
                   "\tPPR [s]tinkt mir\n" +
                   "\tPPR, Flasche [l]eer.\n\n");
        char eingabe = Terminal.readChar();
        switch(switch == 't') {
            Terminal.println("Wir moegen dich auch.");
        }
        else switch(eingabe == 's') {
          Terminal.println("Hauptsache wir stinken geruchstechnisch nicht.");
        }
        else switch(switch == 'l') {
            Terminal.println("Giovanni, lernst du Programmieren?");
        }
        else {
            Terminal.println("Das stand gar nicht zur Auswahl.");
        }
    }


}
Sehe gerade, dass ich was durcheinander gebracht habe, hier nochmal der Veränderte Code:

Java:
public class Menu {
        
    public static void main(String [] args) {
        System.out.print("Bitte auswaehlen...\n" +
                   "\tPPR ist [t]oll\n" +
                   "\tPPR [s]tinkt mir\n" +
                   "\tPPR, Flasche [l]eer.\n\n");
        char eingabe = Terminal.readChar();
        switch(case == 't') {
            Terminal.println("Wir moegen dich auch.");}
        break
        else switch(case == 's') {
          Terminal.println("Hauptsache wir stinken geruchstechnisch nicht.");}
        break
        else switch(case == 'l') {
            Terminal.println("Giovanni, lernst du Programmieren?");}
        break
        else {
            Terminal.println("Das stand gar nicht zur Auswahl.");}
        break;
    }


}
 
Kirby.exe

Kirby.exe

Top Contributor
Nein schau dir mal die Syntax von Switch an ;)

Die ist in etwa so:

Java:
switch(variable){
    case 't':
        blabla
    break;
    case 't':
        blabla
    break;
}

Ein Case in einem Switch ist wie ein Block von einem If-Else :) Durch das Break; am ende des jeweiligen Case springst du aus dem Switch Konstrukt ;)
 
C

Cookiieee

Mitglied
Nein schau dir mal die Syntax von Switch an ;)

Die ist in etwa so:

Java:
switch(variable){
    case 't':
        blabla
    break;
    case 't':
        blabla
    break;
}

Ein Case in einem Switch ist wie ein Block von einem If-Else :) Durch das Break; am ende des jeweiligen Case springst du aus dem Switch Konstrukt ;)
Ah, also nur ganz am Ende ein break..?

Und die "switch (variable)", diese kommt anstelle von "char eingabe" , sry bin gerade etwas verwirrt ...
 
temi

temi

Top Contributor
Generell versuch doch einfach mal deinen Code auszuführen. Das sollte nämlich nicht gelingen.

Falls du kein Java installiert hast, dann nimm einen Online-Compiler deiner Wahl im Webbrowser.
 
C

Cookiieee

Mitglied
Am ende jedes Cases ;)
Ah okay, jetzt müsste das aber richtig sein oder?
Habe es im Programm auch schon laufen lassen, aber wegen dem "Terminal.println" wird mir das als Fehler angezeigt.

Java:
public class Menu {
       
    public static void main(String [] args) {
        System.out.print("Bitte auswaehlen...\n" +
                         "\tPPR ist [t]oll\n" +
                         "\tPPR [s]tinkt mir\n" +
                         "\tPPR, Flasche [l]eer.\n\n");
        char eingabe = Terminal.readChar();
       
        switch (code) {
        case (eingabe == 't') :
            Terminal.println("Wir moegen dich auch.");
            break;
       
        case(eingabe == 's') :
            Terminal.println("Hauptsache wir stinken geruchstechnisch nicht.");
            break;
       
        case(eingabe == 'l') :
            Terminal.println("Giovanni, lernst du Programmieren?");
            break;
       
           {
            Terminal.println("Das stand gar nicht zur Auswahl.");
            break;
        }}}}
 
temi

temi

Top Contributor
C

Cookiieee

Mitglied
Dann schreib die wichtigen Teile, um die es gerade geht, ohne Terminal und verwende einfach System.out.println(), um das zu testen.

Habe das jetzt so, es funktioniert auch, dann kann man das so lassen oder?
Das war die Aufgabe:

Was wird getestet?EingabeResultat
// Dieser Test schaut ob ein "if" in der Abgabe vorkommtPasst!
Menu.main(null);tBitte auswaehlen...
\tPPR ist [t]oll
\tPPR tinkt mir
\tPPR, Flasche [l]eer.

Wir moegen dich auch.




Java:
public class Menu {

    public static void main(String [] args) {
        System.out.print("Bitte auswaehlen...\n" +
                         "\tPPR ist [t]oll\n" +
                         "\tPPR [s]tinkt mir\n" +
                         "\tPPR, Flasche [l]eer.\n\n");
        System.out.println();
       
        int method = 0;
        switch (method){
        case 't' :
            System.out.println("Wir moegen dich auch.");
            break;
       
        case 's' :
            System.out.println("Hauptsache wir stinken geruchstechnisch nicht.");
            break;
       
        case'l' :
            System.out.println("Giovanni, lernst du Programmieren?");
            break;
           
        case 'k' :
               System.out.println("Das stand gar nicht zur Auswahl.");{
            break;
        }}}}

Ergebnis:
Bitte auswaehlen...
PPR ist [t]oll
PPR tinkt mir
PPR, Flasche [l]eer.
 
C

Cookiieee

Mitglied
Okay super, weiß auch gerade nicht warum diese Striche drüber gekommen sind...
Eine Frage hätte ich noch 😅
Und zwar, die Sätze die nach dem "System.out.println" kommen, wie würde ich diese mit im Programm laufen lassen?
Ansonsten bedanke ich mich vielmals!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W for Schleife in allgemeingültiges Konstrukt aus Stream und Lambdas Java Basics - Anfänger-Themen 6
G Was ist das für ein Konstrukt Java Basics - Anfänger-Themen 7
G Wie nennt man dieses Konstrukt Java Basics - Anfänger-Themen 3
S Datentypen geignetes java konstrukt gesucht Java Basics - Anfänger-Themen 5
E Was ist das für ein Java Konstrukt (e.getDistance() < 200 ? 0 : 8) Java Basics - Anfänger-Themen 2
F Seltsames Konstrukt? Java Basics - Anfänger-Themen 5
O If-Konstrukt verkleinern Java Basics - Anfänger-Themen 3
B Was ist das für ein Konstrukt? Java Basics - Anfänger-Themen 2
P if.else.Konstrukt Java Basics - Anfänger-Themen 12
P switch-case Konstrukt auch mit case i < 6: s = 6 ? Java Basics - Anfänger-Themen 10
G Wie nennt man dieses Konstrukt: Vector<Object> Java Basics - Anfänger-Themen 2
OZAN86 For Schleife von 1-50 die Zahlen werden durch ein Komma getrennt Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
E 2D Array - char durch die Matrix "wandern" lassen Java Basics - Anfänger-Themen 7
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
F Methode für Teilbarkeit durch 5 tut was anderes.... Java Basics - Anfänger-Themen 3
H Aufruf von Methoden durch Methoden Java Basics - Anfänger-Themen 3
H Wie kann ich durch Methoden definiren? Java Basics - Anfänger-Themen 8
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
O Typparameter durch Wildcards verallgemeinern Java Basics - Anfänger-Themen 3
G Benutzereingaben durch Zeilenumbruch trennen und in Array individueller Größe speichern Java Basics - Anfänger-Themen 20
B Import Tabelle - Struktur durch User einstellbar Java Basics - Anfänger-Themen 4
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
UnknownInnocent Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
H OOP eine Zahl immer weiter durch 2 teilen Java Basics - Anfänger-Themen 15
I Null-Überprüfung durch Lambda-Expressions abkürzen Java Basics - Anfänger-Themen 8
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7
N Denksportaufgabe durch Algorithmus lösen Java Basics - Anfänger-Themen 2
H Array mit Zahlen die durch 3 und 5 teilbar sind erstellen Java Basics - Anfänger-Themen 13
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
J Die Zahl herausfinden die durch 2 - 30 Teilbar ist... Java Basics - Anfänger-Themen 17
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
T Extrahiertes Objekt durch Getter bekommen Java Basics - Anfänger-Themen 2
R Eine Schleife durch eine Methode schließen? Java Basics - Anfänger-Themen 4
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
S For-Schleife durch "ESC" verlassen? Java Basics - Anfänger-Themen 2
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
V Durch 0 teilen Java Basics - Anfänger-Themen 2
V Durch Methode Objekt löschen Java Basics - Anfänger-Themen 2
D Klasse durch eine Schleife wiederholen Java Basics - Anfänger-Themen 1
J Wie lege ich eine durch Random ausgesuchte Zahl in ein Array? Java Basics - Anfänger-Themen 3
S button kommt durch bild Java Basics - Anfänger-Themen 13
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
W Objektname durch Tastaturbefehl eingeben Java Basics - Anfänger-Themen 7
K ArrayList durch ArrayList ersetzen Java Basics - Anfänger-Themen 5
G Objektübergabe durch Parameter Java Basics - Anfänger-Themen 3
P Erste Schritte durch MenuBar verschiedene Fenster öffnen Java Basics - Anfänger-Themen 2
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
T Threads Durch threads gestartete Prozesse killen Java Basics - Anfänger-Themen 2
M ArrayList durch OutputStream in Datei Java Basics - Anfänger-Themen 9
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
F Erste Schritte Hausaufgaben-Prob. - Iterative Prog. Zahlen aufsummieren, wenn durch k>0 teilbar. Java Basics - Anfänger-Themen 5
T Input/Output Programm beenden durch Eingabe Java Basics - Anfänger-Themen 1
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
Ponychan95 Erste Schritte Switch fällt immer bis zum default durch Java Basics - Anfänger-Themen 4
J Warum wird Array durch Methode ohne Rückgabewert verändert? Java Basics - Anfänger-Themen 5
N Durch Objekte iterieren? Java Basics - Anfänger-Themen 3
J Durch 2-Dimensionales Array "bewegen" will nicht so recht hinhauen Java Basics - Anfänger-Themen 2
B Durch eine Liste von Strings laufen Java Basics - Anfänger-Themen 6
D javacode durch Html ausfuehren Java Basics - Anfänger-Themen 13
K Durch ArrayList laufen Java Basics - Anfänger-Themen 8
X Erste Schritte Lernen durch Videoreihe Java Basics - Anfänger-Themen 35
M Möglich? Methode aufrufen deren Bezeichner zur Laufzeit durch einen überg. String festgelegt wird Java Basics - Anfänger-Themen 3
T Best Practice JUnit: Wie Klassen durch Stubs/Mockups ersetzen Java Basics - Anfänger-Themen 7
H Text durch Checkbox erscheinen lassen Java Basics - Anfänger-Themen 2
J Datensätze aus Txt Datei auslesen - Datensätze durch stöbern Java Basics - Anfänger-Themen 5
Ananaskirsche Input/Output Platzhalter durch String in yml-Datein ersetzen Java Basics - Anfänger-Themen 5
F Speicherlast mehrere GB durch kleine png files? Java Basics - Anfänger-Themen 1
AssELAss ß durch ss oder SS ersetzen Java Basics - Anfänger-Themen 10
W 2dim - Array Ausgabe von Zahlen, teilbar durch 3. Java Basics - Anfänger-Themen 4
T Division durch 0 abfangen mit Schleife Java Basics - Anfänger-Themen 4
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
H Quotient durch Subtraktion bestimmen Java Basics - Anfänger-Themen 12
J beenden durch choice Java Basics - Anfänger-Themen 11
N Nummernblock durch FOR-Schleife? Java Basics - Anfänger-Themen 2
M Endlosschleife bricht durch switch ab Java Basics - Anfänger-Themen 17
G Line Separator in ArrayList durch ";" ersetzen Java Basics - Anfänger-Themen 4
D Durch Button klick wert in JTextField einfügen Java Basics - Anfänger-Themen 5
K Durch alle Attribute eines Objektes iterieren Java Basics - Anfänger-Themen 6
G Klassen Array durch eine Klasse aufrufen Java Basics - Anfänger-Themen 4
N Potenzierung durch einfache Operatoren Java Basics - Anfänger-Themen 13
F Erste Schritte Aktuelles Fenster durch Event schließen Java Basics - Anfänger-Themen 3
B auf private Variable durch eine Methode zugreifen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen


Oben