zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

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.


Bereiche testen

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;

Frage 13:

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.