Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Algorithmen (http://www.informatikerboard.de/board/board.php?boardid=17)
----- if in switch umwandeln (http://www.informatikerboard.de/board/thread.php?threadid=3778)


Geschrieben von InformatikJava12 am 13.11.2017 um 16:51:

  if in switch umwandeln

Hallo, ich bins wieder. Es geht um folgendes:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
if( buchstabe >= ’A’ && buchstabe <= ’F’) {
               if( buchstabe < ’D’) {
                   if( buchstabe < ’C’) { 
                       if( buchstabe > ’A’) { 
                          System . out . println ("B wie Berta ") ; 
                           }
                        else { 
                         System . out . println ("A wie Anton ") ; 
                     }
                   } else { 
            System . out . println ("C wie Caesar ") ; 
              } 
           } else { 
              if( buchstabe < ’F’) { 
                   if( buchstabe == ’E’) { 
                      System . out . println ("E wie Emil ") ; 
                } else { 
                     System . out . println ("D wie Dora ") ;
  
                  } 
                 } else {
            System . out . println ("F wie Friedrich ") ;
               } 
          } 
                } else { 
                 System . out . println (" Unbekannt ") ; 
 }


Das soll ich in Switch umwandeln. Wie soll das gehen. Wie verschachtle ich das?



Geschrieben von InformatikJava12 am 15.11.2017 um 08:58:

  RE: if in switch umwandeln

Kann mir jmd nur 3 Zeilen erklären. Wie ich switch verschachtle?



Geschrieben von as_string am 15.11.2017 um 11:24:

 

Wieso verschachteln?
Du musst doch nur ein ganz einfaches switch hinschreiben. Du verwendest doch Eclipse, oder? Schreib doch einfach mal switch hin und drücke Strg-Leertaste (also Autovervollständigung). Dann schreibt er doch ein switch-Gerüst schon hin.
Oder schau einfach irgendwo im Internet, wie man in Java ein switch macht.

Gruß
Marco



Geschrieben von InformatikJava12 am 16.11.2017 um 18:42:

 

Also z.b wenn ich den 1. case habe. Soll ich da die Bedingungen aus den if verbinden.

Also
case buchstabe >= ’A’ && buchstabe <= ’F’ && buchstabe < ’C’ && buchstabe < ’D’ && buchstabe > ’A’:

System . out . println ("B wie Berta ") ;
break;

so? verwirrt



Geschrieben von as_string am 16.11.2017 um 21:05:

 

Nein: A ist ein "case", B ist ein eigener "case", etc.
Was ist denn die Ausgabe, wenn Du A hättest? Was ist die Ausgabe bei B? Diese if-else-Verschachtelung, die gegeben ist, ist doch so wie so unnötig kompliziert.

Gruß
Marco



Geschrieben von InformatikJava12 am 16.11.2017 um 21:41:

 

Es gibt doch kein case A. Nur so etwas wie =<A. Kannst du mir sagen was ich da machen soll?



Geschrieben von as_string am 16.11.2017 um 23:09:

 

Doch, es gibt case a:
Versuchs einfach mal so rum zu sehen:
Die Variable "buchstabe" kann als Wert einen Buchstaben aufnehmen, also A, B, C, D, E, F, G, H, ...
Angenommen die Variable hätte den Wert A, was würde dann ausgegeben werden? Angenommen der Wert wäre B, was wäre dann die Ausgabe, was ist, wenn der Wert C wäre, was ist dann die Ausgabe, etc.?
Was ist, wenn die Variable buchstabe den Wert H hätte, wie sähe dann die Ausgabe aus.

Und jetzt machst Du einen switch-case für diese verschiedene Einzelfälle!

Gruß
Marco



Geschrieben von InformatikJava12 am 16.11.2017 um 23:56:

 

Ich verstehe das einfach nicht. traurig Das einzige was ich sehe ist case E: System . out . println ("E wie Emil ") ;

Aber wie soll case A austellen wenn da steht z.b
if( buchstabe > ’A’) {
System . out . println ("B wie Berta ") ;


} unglücklich



Geschrieben von as_string am 17.11.2017 um 00:08:

 

Ja wenn buchstabe gerade 'A' ist, ist dann die Bedingung buchstabe > 'A' erfüllt oder nicht? Wenn die nicht erfüllt ist, was passiert denn dann mit dem if?



Geschrieben von InformatikJava12 am 17.11.2017 um 07:52:

 

Ist es dann so:

case A:
System . out . println ("A wie Anton ") ;
break;

case C:
System . out . println ("C wie Caesar ") ;
break;

so?



Geschrieben von as_string am 17.11.2017 um 11:37:

 

Ja, und das dann natürlich für alle Buchstaben.
Was ist aber mit Buchstaben, die nach F kommen, also z. B. H oder auch R oder so. Da solltest Du schauen, ob Du noch eine default:-Behandlung im switch brauchst.

Gruß
Marco



Geschrieben von InformatikJava12 am 17.11.2017 um 12:05:

 

Wo ist denn das else zu Buchstabe D. Was ist da meine Alternative. Ich hänge noch da dran festunglücklich



Geschrieben von as_string am 17.11.2017 um 13:50:

 

Ich verstehe die Frage nicht...
Geh doch einfach mal die if-else-Verschachtelung durch, dann wirst Du doch relativ schnell erkennen, dass es schlicht die Fälle gibt, wo buchstabe einen Buchstaben zwischen A und F hält und dann ein entsprechender Satz ausgegeben wird ("A wie Anton", wenn buchstabe == 'A', "B wie Berta" wenn buchstabe == 'B', "C wie Caeser" wenn buchstabe == 'C', "D wie Dora" bei buchstabe == 'D', "E wie Emil" bei buchstabe == 'E' und "F wie Friedrich" bei buchstabe == 'F'). Verstehst Du das so weit? Das hat ja alles noch nichts mit switch-case zu tun sondern schlicht damit, die if-else-Verschachtelung richtig zu folgen, was aber sooo schwer nun auch wieder nicht sein kann, oder?
Außerdem wird noch " Unbekannt" ausgegeben, wenn ein buchstabe keinen Buchstaben zwischen 'A' und 'F' hat.
Das jetzt noch in ein switch-case zu packen kann doch sooo schwer nicht sein, oder?

Gruß
Marco



Geschrieben von InformatikJava12 am 17.11.2017 um 21:48:

 

Ok dann habe ich das
Switch{
case A:
System . out . println ("A wie Anton ") ;
break;
Case B:
System . out . println ("B wie Berta ") ;
break;
case C:
System . out . println ("C wie Caesar ") ;
break;
Usw. bis F und dann
defaut:

System . out . println (" Unbekannt ") ;
}
break;
Sorry dass ich solange gebraucht habe. Ich hoffe das ist richtig so jetzr LOL Hammer



Geschrieben von as_string am 18.11.2017 um 03:02:

 

Sieht prinzipiell soweit gut aus, außer das letzte break. Entweder weg lassen oder in die geschweifte Klammer mit rein. Dann macht man normalerweise keine Leerzeichen um die Punkte von zb System.out.println
Aber im Zweifelsfall: versuchs zu kompilieren und auszuführen. Wenn es das Richtige macht, passt es schon, denke ich.

Gruß
Marco


Forensoftware: Burning Board, entwickelt von WoltLab GmbH