Checkpoint 1.50.1.
You will see a copy of the
printDiscount()
function in an interactive mode where you can modify and compile it. We want you to improve the style of this function as an expert would view it without changing its behavior. To ensure this you can run your refactored code and compare the expected print messages with what your refactored method actually prints.public class FinalPrice {
public static void printDiscount(String itemType, double originalPrice, boolean hasSpecialOffer) {
double standardDiscount = 0.15;
double bulkDiscount = 0.25;
double vipDiscount = 0.5;
String introMessage = "Item: " + itemType + ", Original Price: $" + originalPrice + ". ";
String finalMessage = "Discounted Price: $";
if ("electronics".equals(itemType) && hasSpecialOffer) {
String message = introMessage;
message += "Special offer applied. " + finalMessage;
double discountedPrice = originalPrice * (1 - vipDiscount);
message += discountedPrice;
System.out.println(message);
} else if (originalPrice > 200) {
String message = introMessage;
message += "Bulk discount applied. " + finalMessage;
double discountedPrice = originalPrice * (1 - bulkDiscount);
message += discountedPrice;
System.out.println(message);
} else {
String message = introMessage;
message += finalMessage;
double discountedPrice = originalPrice * (1 - standardDiscount);
message += discountedPrice;
System.out.println(message);
}
}
public static void main(String[] args) {
// Test Case 1:
System.out.println("Test Case 1: printDiscount(\"clothes\", 300.0, true);");
System.out.println("Expected Output: Item: clothes, Original Price: $300.0. Bulk discount applied. Discounted Price: $225.0");
System.out.print("Actual Output: ");
printDiscount("clothes", 300.0, true);
// Test Case 2:
System.out.println("\nTest Case 2: printDiscount(\"clothes\", 500.0, false);");
System.out.println("Expected Output: Item: clothes, Original Price: $500.0. Bulk discount applied. Discounted Price: $375.0");
System.out.print("Actual Output: ");
printDiscount("clothes", 500.0, false);
// Test Case 3:
System.out.println("\nTest Case 3: printDiscount(\"electronics\", 500.0, true);");
System.out.println("Expected Output: Item: electronics, Original Price: $500.0. Special offer applied. Discounted Price: $250.0");
System.out.print("Actual Output: ");
printDiscount("electronics", 500.0, true);
}
}