Section 5.4 Worked Example: Write Selection Statements
Subgoals for Writing Selection Statements.
If Statement
- Define how many mutually exclusive paths are needed
- Order from most restrictive/selective group to least restrictive
- Write if statement with Boolean expression
- Follow with true bracket including action
- Follow with else bracket
- Repeat until all groups and actions are accounted for
OR Switch Statement
- Determine variable / expression for mutually exclusive ranges
- Write switch statement based on variable / expression
- Each range is a ‘case’
- Include break statements and default case if needed
Subsection 5.4.1
You can watch this video or read through the content below it.
Problem: Write the Java selection statements to solve the following specifications:
If integer variable currentNumber is odd, change its value so that it is now 4 times currentNumber plus 1; otherwise change its value so that it is now half of currentNumber (rounded down when currentNumber is odd).
Subsection 5.4.2 SG1: Define how many mutually exclusive paths are needed
In this case, the problem says to do one action if variable is odd, and a different action otherwise.
Integer variable can only be odd or even, so there are 2 mutually exclusive paths. An if statement is best approach
Subsection 5.4.3 SG2: Order from most restrictive/selective group to least restrictive
Since there are only 2 branches, order should not matter
Subsection 5.4.4 SG3: Write if statement with Boolean expression
To determine if currentNumber is odd, we can check the remainder after dividing by 2 (modulo):
if (currentNumber % 2 == 1)
Subsection 5.4.5 SG4: Follow with true bracket including action
In the true branch, change value to 4 times + 1
if (currentNumber % 2 == 1)
{
currentNumber = currentNumber * 4 + 1;
}
Subsection 5.4.6 SG5 : Follow with else bracket
In the else branch, change value to half current value. Note that integer division automatically truncates i.e. rounds down.
if (currentNumber % 2 == 1)
{
currentNumber = currentNumber * 4 + 1;
}
else
{
currenNumber /= 2;
}
Subsection 5.4.7 SG6: Repeat until all groups and actions are accounted for
Not used – only two branches
Subsection 5.4.8 Equivalent solution using the other ordering of the range/case groups.
if (currentNumber % 2 == 0)
{
currentNumber /= 2;
}
else
{
currentNumber = currentNumber * 4 + 1;
}
Practice Pages.
You have attempted of activities on this page.