Mit dem Programm ist nichts falsch.
Da farbe
ein primitiver Datentyp ist
vergleicht ein Ausdruck wie
farbe == 'V'
den Inhalt von farbe
(ein Zeichen) mit dem
Zeichenliteral 'V'.
Aber, das folgende ist falsch:
farbe == "V"
Ein primitiver Zeichenwert wie in farbe
kann nicht mit Referenz eines Stringobjekts wie "V" verglichen werden.
Angenommen wir haben das folgende Problem:
Wir möchten eine Beaufort Zahl der Variablen beauZahl
zuweisen, basierend
auf der Windgeschwindigkeit in Meter pro Sekeunde.
Windgeschwindigkeit | Beaufort Zahl |
---|---|
0 - 0.3 | 0 |
0.3 - 1.6 | 1 |
1.6 - 3.4 | 2 |
3.4 - 5.5 | 3 |
5.5 - 8.0 | 4 |
8.0 - 10.8 | 5 |
10.8 - 13.9 | 6 |
13.9 - 17.2 | 7 |
17.2 - 20.8 | 8 |
20.8 - 24.5 | 9 |
24.5 - 28.5 | 10 |
28.5 - 32.7 | 11 |
>=32.7 | 12 |
Wir setzen voraus, das die größere Zahl in jedem Bereich nicht enthalten ist.
Jede Menge von Fällen! Leider funktioniert die switch
-Anweisung hier nicht.
Gleitpunktwerte können in einer switch
-Anweisung nicht verwendet werden.
Wir müssen if
und else if
einsetzen.
if ( gechwindigkeit < 0.3 ) beauZahl = 0; else if ( gechwindigkeit < 1.6 ) beauZahl = 1; else if ( gechwindigkeit < 3.4 ) beauZahl = 2; else if ( gechwindigkeit < 5.5 ) beauZahl = 3; else if ( gechwindigkeit < 8.0 ) beauZahl = 4; else if ( gechwindigkeit < 10.8 ) beauZahl = 5; else if ( gechwindigkeit < 13.9 ) beauZahl = 6; else if ( gechwindigkeit < 17.2 ) beauZahl = 7; else if ( gechwindigkeit < 20.8 ) beauZahl = 8; else if ( gechwindigkeit < 24.5 ) beauZahl = 9; else if ( gechwindigkeit < 28.5 ) beauZahl = 10; else if ( gechwindigkeit < 32.7 ) beauZahl = 11; else beauZahl = 12;
Könnten Ganzzahlen Bereiche in einer switch
-Anweisung verwendet werden?
Angenommen der wert
liegt in einem Bereich von 1 bis 10 und wir haben drei Kategorien:
1 bis 3, 4 bis 7, 8 bis 10.