switch aus der realen Welt

idealist66

Mitglied
Hallo zusammen,
ich brauche ein abstraktes Beispiel zur Schilderung von switch-Kontrollstrukturen.
An welchem Beispiel kann man switches am Besten beschreiben.
Möchte Schülern die Wichtigkeit von switches näher bringen und dabei ein Beispiel demonstrieren wo es eingesetzt wird und wo es wichtig ist

Danke im Voraus
 
G

Gast2

Gast
Ob switsches wichtig sind, naja ;)

Du kannst doch ein beliebiges if-elseif-else beispiel nehmen und daraus eine switch anweisung machen. Nen (vernünftiges) konkretes Beispiel fällt mir im moment nicht ein.
 

eRaaaa

Top Contributor
Nimm doch einfach eines aus einem Buch? Z.B. Java Insel (Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 2.6 Bedingte Anweisungen oder Fallunterscheidungen
Java:
switch ( operator ) 
{ 
  case '+': 
    System.out.println( x + y ); 
    break; 
  case '-': 
    System.out.println( x – y ); 
    break; 
  case '*': 
    System.out.println( x * y ); 
    break; 
  case '/': 
    System.out.println( x / y ); 
    break; 
}

Oder aus den Java-Tutorials The switch Statement (The Java™ Tutorials > Learning the Java Language > Language Basics)
Java:
 switch (month) {
            case 1:  System.out.println("January"); break;
            case 2:  System.out.println("February"); break;
            case 3:  System.out.println("March"); break;
            case 4:  System.out.println("April"); break;
            case 5:  System.out.println("May"); break;
            case 6:  System.out.println("June"); break;
            case 7:  System.out.println("July"); break;
            case 8:  System.out.println("August"); break;
            case 9:  System.out.println("September"); break;
            case 10: System.out.println("October"); break;
            case 11: System.out.println("November"); break;
            case 12: System.out.println("December"); break;
            default: System.out.println("Invalid month.");break;
        }

Oder wenn ihr schon enums hattet: Enum Types (The Java™ Tutorials > Learning the Java Language > Classes and Objects)
Java:
switch (day) {
			case MONDAY: System.out.println("Mondays are bad.");
					     break;
					
			case FRIDAY: System.out.println("Fridays are better.");
					     break;
					     
			case SATURDAY:
			case SUNDAY: System.out.println("Weekends are best.");
					     break;
					     
			default:	 System.out.println("Midweek days are so-so.");
					     break;
		}

brauchste noch mehr? :autsch:
 

XHelp

Top Contributor
Wie beurteilt man eine Note:
Wenn es eine 1 ist, dann war der Schüler gut
Wenn es eine 2 ist, dann hat er sich bemüht
...
Wenn es eine 6 ist, dann hat er switch nicht verstanden
:joke:
 

Marco13

Top Contributor
Um EikeBs Einwand nochmal zu bekräftigen: switch ist ... IMHO ein bißchen anachronistisch. Es besteht zumindest die Gefahr, dass es verwendet wird, wo eigentlich Polymorphie angebracht wäre. Das erste Beispiel von eRaaaa (*a's zähl* ;) ) könnte - vielleicht ein bißchen krampfig-suggestiv dargestellt, aber um den Gedanken zu verdeutlichen - etwa so aussehen:

Java:
interface Operator { int execute(int x, int y); }
class Plus  implements Operator { int execute(int x, int y) { return x+y; } }
class Minus implements Operator { int execute(int x, int y) { return x-y; } }
class Mul   implements Operator { int execute(int x, int y) { return x*y; } }
class Div   implements Operator { int execute(int x, int y) { return x/y; } }

Ähnliches läßt sich auf andere Beispiele übertragen. (Für eine reine Abbildung könnte in machen Fällen auch eine Map angebracht sein, aber das ist nochmal ein anderer Punkt)
 

idealist66

Mitglied
wow danke für die Beispiele
konkrete Programmierbeispiele habe ich vorbereitet
mein Problem ist ein abstraktes Problem zu schildern
Beispiel if-else war eine passwortabfrage am handy das konnten sie sich gut vorstellen
jetzt will ich switch einführen und zuerst allgemeines aspekt darstellen mit switches vergleichend
wäre dankbar für jede idee
 

XHelp

Top Contributor
Also wenn deine Schüler "Wenn a=2, dann mach das, sonst mach dies" für ein abstraktes Problem halten und es nur mit einem Beispiel verstehen können, dann wirst du noch sehr viel Spass mit dennen haben.
Wenn die if aber schon können, dann kannst du ja:
Java:
if (a==2) { .. }
 else if (a==3) {...}
 else if (a==4) {...}
 else {...}
aufschreiben und das ganze noch mal als switch.
 

faetzminator

Gesperrter Benutzer
Ein Beispiel mit Cases ohne Breaks wär noch was, aber da fällt mir auch gerade nichts reales ein... Vielleicht so was :p ?
Java:
switch (person.getGender()) {
    case FEMALE:
        person.redrawLipstick(); // die Frau muss sich zuerst noch hübsch machen
    case MALE:
        person.enter(); // beide betreten xy
        break;
    case OTHER:
        throw new Exception(); // bla
    [...]
}
 

Landei

Top Contributor
Ein Beispiel wären Zahlungsmodalitäten in einem Onlineshop: Je nachdem, ob man mit Kreditkarte, PayPal, Vorkasse u.s.w. bezahlt, muss das Programm unterschiedliche Dinge abchecken.
 

dark_xray

Mitglied
Ein reales Beispiel zu einem Switch case........

wie wäre es hier mit:
ein Parkplatz mit mehreren 100 Autos.
Man geht ja nicht zum ersten Auto und probiert ob der schlüssel passt, wenn nicht, zum nächsten Auto.....
das solange bis der Schlüssel passt (if else)
sondern man geht direkt zu dem richtigem Auto (switch case)
 

ARadauer

Top Contributor
Ein reales Beispiel zu einem Switch case........

wie wäre es hier mit:
ein Parkplatz mit mehreren 100 Autos.
Man geht ja nicht zum ersten Auto und probiert ob der schlüssel passt, wenn nicht, zum nächsten Auto.....
das solange bis der Schlüssel passt (if else)
sondern man geht direkt zu dem richtigem Auto (switch case)

ein switch probiert aber auch jede Auto durch ;-)
 

dark_xray

Mitglied
Stimmt da war :oops:

Naja wie wärs denn mit essen in einem guten Restaurant wo man sich aus suchen kann ob mit oder ohne vorspeise oder ob nur nachspeise usw....
Man aber auf jedenfall die nachfolgenden Gänge essen will.
Java:
switch(auswahl){
case vorspeise:
   bestell_vorspeise();
case hauptgang:
   bestell_hauptgang();
case nachspeise:
   bestell_nachspeise();
}
vs
Java:
if(auswahl.equals(vorspeise)){
   bestell_vorspeise();
   bestell_hauptgang();
   bestell_nachspeise();
}else if(auswahl.equals(hauptgang)){
......
}
 

_bjoern_

Mitglied
Also ganz ehrlich "switch" ist die umschreibung fuer "goto" (deshalb braucht man auch zwingend das "break", wenn man die nachfoldenden case zweige nicht abarbeiten will ... also meiner meinung werden aus deinen schuelern bessere programmierer wenn sie dieses konstrukt nicht benutzen oder sich selber beibringen ...
 

Momolin

Aktives Mitglied
Hallo,

wir wäre es mit einer Maschine, die Münzen sortiert:


1 Cent kommt in Kiste 1
2 Cent kommt in Kiste 2
...
2 EUR kommt in Kiste 5

Viele Grüße
Momolin
 
G

Gastredner

Gast
Was wäre an dem "klassischen" Konsolen-Menü falsch?
Java:
public void runProgram() {
	Scanner in = new Scanner(System.in);
	boolean running = true;
	while (running) {
		System.out.println("=====Dolles Programm=====\n");
		System.out.println("1 - Eine Funktion");
		System.out.println("2 - Noch eine Funktion");
		System.out.println("3 - Die dritte Funktion");
		System.out.println("4 - Beenden");
		System.out.print("Bitte geben Sie ihre Wahl ein: ");
		int option = in.nextInt();
		switch(option) {
		case 1: doStuff(); break;
		case 2: doSomeMoreStuff(); break;
		case 3: doEvenMoreStuff(); break;
		case 4: System.out.println("Tschüss!");
				running = false;
				break;
		default: System.out.println("Ungültige Angabe!\n");
		}
	}
}
Oder ist das heutzutage für Schüler nicht mehr "gut genug"????:L
 

mirjam

Mitglied
wie wärs mit den automatischen Anrufbeantwortern, z.B. beim Reservieren von Kinokarten über Telefon:

Bitte wählen Sie "1", wenn sie das heutige Kinoprogramm wissen möchte,
wählen Sie "2", wenn Sie Kinokarten reservieren möchten,
wählen Sie "3", wenn Sie ...
 
T

Tomate_Salat

Gast
Enums:
Java:
public enum Type
{
    ENEMY, FRIEND, PLAYER, ZIVI;
    
    public Color getMiniMapColor()
    {
        switch(this) {
            case ENEMY:
                return Color.BLACK;
            case FRIEND:
                return Color.GREEN;
            case PLAYER:
                return Color.BLUE;
        }
        
        return Color.YELLOW;
    }
}
 
B

bygones

Gast
bei ca 90 % der Bsp will ich nochmal auf Marcos Vorschlag mit der Polymorphie hinweisen ;-)
 

Ähnliche Java Themen

Neue Themen


Oben