if in switch umwandeln |
InformatikJava12 unregistriert
|
|
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?
|
|
13.11.2017 16:51 |
|
|
InformatikJava12 unregistriert
|
|
RE: if in switch umwandeln |
|
Kann mir jmd nur 3 Zeilen erklären. Wie ich switch verschachtle?
|
|
15.11.2017 08:58 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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
|
|
15.11.2017 11:24 |
|
|
InformatikJava12 unregistriert
|
|
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?
|
|
16.11.2017 18:42 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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
|
|
16.11.2017 21:05 |
|
|
InformatikJava12 unregistriert
|
|
Es gibt doch kein case A. Nur so etwas wie =<A. Kannst du mir sagen was ich da machen soll?
|
|
16.11.2017 21:41 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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
|
|
16.11.2017 23:09 |
|
|
InformatikJava12 unregistriert
|
|
Ich verstehe das einfach nicht.
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 ") ;
}
|
|
16.11.2017 23:56 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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?
|
|
17.11.2017 00:08 |
|
|
InformatikJava12 unregistriert
|
|
Ist es dann so:
case A:
System . out . println ("A wie Anton ") ;
break;
case C:
System . out . println ("C wie Caesar ") ;
break;
so?
|
|
17.11.2017 07:52 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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
|
|
17.11.2017 11:37 |
|
|
InformatikJava12 unregistriert
|
|
Wo ist denn das else zu Buchstabe D. Was ist da meine Alternative. Ich hänge noch da dran fest
|
|
17.11.2017 12:05 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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
|
|
17.11.2017 13:50 |
|
|
InformatikJava12 unregistriert
|
|
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
|
|
17.11.2017 21:48 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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
|
|
18.11.2017 03:02 |
|
|
|