There is nothing wrong with the program.
Since color is a primitive data type,
an expression such as
color == 'V'
compares the contents of color (a character) to the character literal 'V'. However, the following is wrong:
color == "V"
This is asking to compare the primitive character value in color
with a reference to the String object "V".
Say that you have the following problem:
Assign a Beaufort number to bNumber based on wind speed in
meters per second.
| wind speed | Beaufort number |
|---|---|
| 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 |
Assume that the upper number in each range is not included.
Lots of cases! You would hope that the switch statement would work
for this. But it does not.
Floating point values don't work with switch statements.
You need to use if and else if.
if ( speed < 0.3 ) bNumber = 0; else if ( speed < 1.6 ) bNumber = 1; else if ( speed < 3.4 ) bNumber = 2; else if ( speed < 5.5 ) bNumber = 3; else if ( speed < 8.0 ) bNumber = 4; else if ( speed < 10.8 ) bNumber = 5; else if ( speed < 13.9 ) bNumber = 6; else if ( speed < 17.2 ) bNumber = 7; else if ( speed < 20.8 ) bNumber = 8; else if ( speed < 24.5 ) bNumber = 9; else if ( speed < 28.5 ) bNumber = 10; else if ( speed < 32.7 ) bNumber = 11; else bNumber = 12;
Could integer ranges be used with a switch statement?
Say that value is expected to be in the range 1..10 and you want three categories:
1 to 3, 4 to 7, 8 to 10.