Mooon light
Mooon light

Reputation: 17

why I'm unable to calculate amount of sale, and amount of sales tax?

public class Purchase
{

    int invoiceNumber = 1234;
    double salePrice = 10.00;
    double SalesTax;

    public void setInvoiceNumber(int invoice)
    {
        invoiceNumber = invoice;
    }

    public void setSalePrice(double saleAmount)
    {
        salePrice = saleAmount;
        SalesTax = (saleAmount * .05);//when I'm compiling it's not calculating

    }

    public void displaySalePrice()
    {
        System.out.println("Your invoice number is:" + invoiceNumber + ".");
        System.out.println("Your sale amount is: " + salePrice + ".");
        System.out.println("Your sales tax is: " + SalesTax + ".");
    }

 }

Your invoice number is:1234. Your sale amount is: 10.0. Your sales tax is: 0.0.-------Problem area

----jGRASP wedge2: exit code for process is 0. ----jGRASP: operation complete.

Upvotes: 1

Views: 119

Answers (3)

Michael Lafayette
Michael Lafayette

Reputation: 3072

This will work...

public class Purchase
{

    int invoiceNumber = 1234;
    double salePrice = 10.00;
    double SalesTax = 0.0; // by default this is initialized to zero.

    public void setInvoiceNumber(int invoice)
    {
        invoiceNumber = invoice;
    }

    public void setSalePrice(double saleAmount)
    {
        salePrice = saleAmount;
        SalesTax = (saleAmount * .05);//when I'm compiling it's not calculating
    }

    public void displaySalePrice()
    {
        System.out.println("Your invoice number is:" + invoiceNumber + ".");
        System.out.println("Your sale amount is: " + salePrice + ".");
        System.out.println("Your sales tax is: " + SalesTax + ".");
    }

    public static void main(String args[]) 
    {
        setSalePrice(10.0); // sets SalesTax to (100.0 * .05)
        displaySalePrice();
    }

 }

Note that there are some stylistic issues with this class.

  • "SalesTax" starts with an upper case letter, which is supposed to be reserved for class (and interface) names. The correct spelling is "salesTax".

  • It lacks a constructor.

Example Constructor:

public Purchase(int invoiceN, double salesP, doubles salesT) {
    invoiceNum = invoiceN;
    salesPrice = salesP;
    salesTax = salesT;
} 
  • A purchase is a thing that doesn't change once it is made. Its data members are variable (change-able), but they should be invariable (final or constant).

    final int invoiceNumber; // These are set in the Constructor.
    final double salePrice; // Once they are set, they don't change.
    final double salesTax;
    
  • The class has setters (which set/change the variables), but it lacks getters (which retrieve the values of the variables without changing them). In general, variables should be declared "private" and "final" whenever possible. So if I wrote this class, I would have written it like this:

Revised example:

public class Purchase
{

    private final int invoiceNumber;
    private final double salePrice;
    private final double salesTax;

    // Constructor
    public Purchase(int invoiceN, double salesP) {
        invoiceNum = invoiceN;
        salesPrice = salesP;
        salesTax = salesPrice * .05; // The Constructor can figure this out.
    } 

    public int getInvoiceNumber()
    {
        return this.invoiceNumber; // "this." is optional
    }


    public double getSalePrice()
    {
        return this.salePrice();
    }

    public double getSalesTax()
    {
        return this.salesTax;
    }

    public void displaySalePrice()
    {
        System.out.println("Your invoice number is:" + getInvoiceNumber() + ".");
        System.out.println("Your sale amount is: " + getSalePrice() + ".");
        System.out.println("Your sales tax is: " + getSalesTax() + ".");
    }

    public static void main(String args[]) 
    {
        Purchase shoesPurchase = new Purchase(1234, 10.00);
        shoesPurchase.displaySalePrice();
    }

 }

Upvotes: 2

ControlAltDel
ControlAltDel

Reputation: 35106

You are never calling setSalePrice, so the sales tax never gets set

here's one way to correct this, though really you should probably call setSalePrice before calling displaySalePrice, rather than inside of it

public void displaySalePrice()
{
    setSalePrice(salePrice);
    System.out.println("Your invoice number is:" + invoiceNumber + ".");
    System.out.println("Your sale amount is: " + salePrice + ".");
    System.out.println("Your sales tax is: " + SalesTax + ".");
}

Upvotes: 0

npinti
npinti

Reputation: 52205

You are never using the setSalePrice method, hence your SalesTax parameter is never being initialized. You could initialize it like so: double SalesTax = salePrice * 0.05;

Upvotes: 1

Related Questions