Java Lab due tonight 14 hours
ISM3230 In-class Lab Week 5, Module 4 – Conditional Logic Spring 2021
FOCUS TOPICS
• Conditional logic
• Boolean expressions
TASK
Your employer, a major airline, offers a frequent flier program. In this program, customers earn status
based on the total number of miles flown and the total number of flight segments flown. A client
qualifies for a status only if both minimum conditions are met (see Table 1).
In addition, the airline is running a promotion where customers receive bonus miles and flight segments
when they sign up for it (see Table 2). This bonus needs to be accounted for when determining the
customer status.
Your task is to determine the appropriate status for a customer based on the following data:
Table 1 - Customer status based on Mileage and Segments
Status Minimum Mileage Minimum Segment Count
Platinum 100,000 75
Gold 75,000 50
Silver 50,000 25
Bronze Less than 50,000 Less than 25
Table 2 - Promotional bonus mileage and segments
Promotion Bonus Mileage Bonus Segment Count
Per participating customer 25,000 10
• To qualify for a given status, the customer must meet the minimum levels for both mileage and
segment count.
• If a customer meets one of the requirements for level X, but not the other, that customer does not
qualify for level X.
• If a customer does not qualify for any mileage/segment-based status, that customer is considered to
have “Bronze” status, i.e., that is the default status for the frequent flier program.
• The promotion input should be a String with the first character being 'Y' or 'y' to indicate Yes. All
other input strings are taken to mean No.
INSTRUCTIONS
From this lab on, your code must be correctly indented. Use Source>Format menu command in
Netbeans to align your code indentation with the use of code blocks identified with { }. Incorrectly
indented code will incur a grade penalty.
1. Declare class-level named constants for the bonus miles and bonus segments that customers
receive if signed up for a promotion (Table 2). You do not need to use constants for the mileage
and segment numbers from Table 1.
2. Prompt the user to enter whether the customer is participating in the promotion, and store the
value as a String (use Scanner's nextLine() method).
3. Prompt the user to enter mileage flown, and store the value as an integer.
4. Prompt the user to enter segment count, and store the value as an integer.
Checkpoint 1:
Print all three user inputs to screen to ensure that you read them correctly:
5. Determine if the customer mileage and segment count should be increased by the bonus
amounts. If yes, add the bonus to the customer data.
o To make this decision, take the first character from the participation String and evaluate
it for being equal to 'Y' or 'y', which means yes. All other characters signify No
participation. Use a "simple" if statement for this step (without else).
▪ Hint: you can do this by using various String methods for equality and case
conversions. See String methods for details on the appropriate methods.
▪ Hint: you can also do this by using a String method charAt(index) and
using a compound boolean expression to check for both cases. See String
methods for details on charAt.
▪ Hint: do not use == for Strings.
Checkpoint 2:
Print the result of the decision based on the user’s input for promotion. If the user
entered anything starting with Y or y, print “promo yes”, otherwise don’t print anything:
If this is working, comment out the print statement and continue to add the logic for the
bonused data.
o You need to preserve the user-entered data for output, so you need new variables for
the bonused data.
▪ Hint: Be mindful of variable scope rules. Make sure variables are visible where
you need them to be, and that they contain valid values regardless of the
outcome of the “if” statement.
Checkpoint 3:
Print out the original user-entered mileage and segments and the bonused mileage and
segments, noting that when the customer does not participate in the promotion, the
values should be the same:
6. Determine the status level for which the customer is eligible, based on the Table 1. Use an "else-
if" pattern for this step.
7. Following the sample output below, report the following information, in this order:
o The total mileage flown without bonus
o The total mileage flown with bonus (if no bonus, then same as above)
o The count of segments flown without bonus
o The count of segments flown with bonus (if no bonus, then same as above)
o The customer status level
8. When printing output, make sure that you separate the logic from the output, i.e., you should
have only one System.out.println statement that prints the customer's status. This print
statement, along with the print statements that display the mileage and segment counts should
be outside and below all if/else logic.
9. Make sure your output matches the sample output in wording, spacing, capitalization, and
punctuation.
The logic of the task can also be summarized by a decision tree or similar diagram:
SAMPLE OUTPUT