More Examples of the switch Statement
In this lesson, we will look at examples of the switch statement with a character or an enumerated data type.
We'll cover the following...
Character values with a switch statement
The action of a switch statement can be based upon a character. For example, if the char variable grade contains a letter grade, the following switch statement assigns the correct number of quality points to the double variable qualityPoints:
public class Example{public static void main(String args[]){double qualityPoints;// Assume that the variable grade contains a character that ranges from 'A' to 'F'char grade = 'D';switch (grade){case 'A':qualityPoints = 4.0;break;case 'B':qualityPoints = 3.0;break;case 'C':qualityPoints = 2.0;break;case 'D':qualityPoints = 1.0;break;case 'F':qualityPoints = 0.0;break;default:System.out.println("grade has an illegal value: " + grade);qualityPoints = -9.0;System.exit(0);} // End switchSystem.out.println("The grade " + grade + " represents " + qualityPoints + " quality points.");} // End main} // End Example
📝 Note: Why does the default case assign a value to
qualityPoints?Without this assignment in the previous
switchstatement, or if we choose to omit the default case altogether, the compiler will think it possible forqualityPointsto remain uninitialized after theswitchstatement. We will get a syntax error. Another way to avoid the syntax error is to initializequalityPointsto a value before theswitchstatement.
The previous switch statement assumes that grade contains an uppercase letter ranging from A to Z. How can we accommodate letter grades given in either uppercase or lowercase without changing either switch (grade) or the value of grade?
In the previous switch statement, would it be reasonable to replace the statements in the default case with one assert statement? Explain.
If you could assume that grade’s value was only 'A', 'B', 'C', 'D', or 'F' prior to execution of the previous switch statement, would it be reasonable to replace the statements in the default case with the following assert statement? Explain.
assert false : "grade has an illegal value: " + grade;