Sunday 30 June 2013

Java Invoice Application solution

Java Problem:



Change the if/else statement so customers of type “R” with a subtotal that is greater than or equal to $250 but less than $500 get a 25% discount and those with a subtotal of $500 or more get a 30% discount.  Next, change the if/else statement so customers of type “C” always get a 20% discount.  Then, test the application to make sure this works.
Add another customer type to the if/else statement so customers of type “T” get a 40% discount for subtotals of less than $500, and a 50% discount for subtotals of $500 or more. 
Check your code to make sure that no discount is provided for a customer type code that isn’t “R”, “C”, or “T”.  Then, fix this if necessary.
Code a static method named getDiscountPercent that has two parameters:  customer type and subtotal.  To do that efficiently, you can move the appropriate code from the main method of the application to the static method and make the required modifications.
Add code that calls the static method from the body of the application.  Then, test to make sure that it works.

Java Code:

import java.text.NumberFormat;
import java.util.Scanner;

public class InvoiceApp
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        String choice = "y";

        while (!choice.equalsIgnoreCase("n"))
        {
            // get the input from the user
            System.out.print("Enter customer type (r/c): ");
            String customerType = sc.next();
            System.out.print("Enter subtotal:   ");
            double subtotal = sc.nextDouble();

            // get the discount percent
            double discountPercent = 0;
            if (customerType.equalsIgnoreCase("R"))
            {
                if (subtotal < 100)
                    discountPercent = 0;
                else if (subtotal >= 100 && subtotal < 250)
                    discountPercent = .1;
                else if (subtotal >= 250)
                    discountPercent = .2;
            }
            else if (customerType.equalsIgnoreCase("C"))
            {
                if (subtotal < 250)
                    discountPercent = .2;
                else
                    discountPercent = .3;
            }
            else
                discountPercent = .1;

            // calculate the discount amount and total
            double discountAmount = subtotal * discountPercent;
            double total = subtotal - discountAmount;

            // format and display the results
            NumberFormat currency = NumberFormat.getCurrencyInstance();
            NumberFormat percent = NumberFormat.getPercentInstance();
            System.out.println(
                "Discount percent: " + percent.format(discountPercent) + "\n" +
                "Discount amount:  " + currency.format(discountAmount) + "\n" +
                "Total:            " + currency.format(total) + "\n");

            // see if the user wants to continue
            System.out.print("Continue? (y/n): ");
            choice = sc.next();
            System.out.println();
        }
    }
}

No comments:

Post a Comment