1

私はこの演習で少し問題があり、誰かが助けてくれるかどうか疑問に思っていました. ここに問題があります:

Purchase という名前のクラスを作成します。各購入には、請求書番号、販売額、消費税額が含まれています。請求書番号と販売金額の set メソッドを含めます。売上金額の set() メソッド内で、売上税を売上金額の 5% として計算します。また、購入の詳細を表示する表示メソッドも含めます。Purchase.class として保存 b. Purchase オブジェクトを宣言し、ユーザーに購入の詳細を求めるアプリケーションを作成します。請求書番号を求めるプロンプトが表示されたら、1,000 から 8,000 の間の番号が入力されるまで、ユーザーが先に進めないようにしてください。販売額を要求するときは、ユーザーが負でない値を入力するまで先に進まないでください。有効な Purchase オブジェクトが作成されたら、オブジェクトの請求書番号、販売金額、消費税を表示します。

私の購入クラスのコードは次のとおりです

import javax.swing.JOptionPane;
import java.util.Scanner;

public class Purchase
{
    //variables
    public static int invoice;
    public static double saleAmount;
    public static double saleTax;

    //get&set for Invoice 
    public void setInvoice(int x)
        {
            invoice = x;
        }
    public int getInvoice( )
        {
            return invoice;
        }

    //get&set for saleAmount
    public void setSaleAmount(double y)
        {
            saleTax = y * 0.05;
            saleAmount = y;
        }
    public double getSaleAmount( )
        {
            return saleAmount;
        }

    //get for saleTax
    public double getSaleTax( )
        {

            return saleTax;
        }

    //display method
    public void display(int invoice, double saleAmount, double saleTax)
        {
        System.out.println("Invoice number: " + invoice + '\n' + "Sale's Amount: " + saleAmount + '\n' + "Sale's Tax: " + saleTax);
        }
}

CreatePurchase クラスのコード

import javax.swing.JOptionPane;
import java.util.Scanner;

public class CreatePurchase

{
    public static void main(String[] args)

    {           
        Purchase purchase1 = new Purchase ();

        //scanner for sales amount      
        Scanner inputDevice = new Scanner(System.in);
      System.out.println("Please enter the sale amount: ");
      Purchase.saleAmount = inputDevice.nextDouble();

        //loop for saleAmount
                while (Purchase.saleAmount < 1)
                    {   
                    System.out.print('\n'+ "Error, your sale amount needs to be more than 0. Please enter a valid sale amount: >> ");
                    Purchase.saleAmount = inputDevice.nextDouble();
                    }

        //scanner for invoice   
        System.out.println("Please enter an invoice number between 1000 and 8000: ");
        Purchase.invoice = inputDevice.nextInt();

                //loop for invoice
                while (Purchase.invoice < 999 || Purchase.invoice > 8000)
                    {
                    System.out.print('\n'+ "Error, please enter a valid invoice number between 1000 and 8000: >> ");
                    Purchase.invoice = inputDevice.nextInt();
                    }

        //display result
        JOptionPane.showMessageDialog(null, "Your invoice number is " + Purchase.invoice + '\n' 
        + "Your sale tax is: " + Purchase.saleTax + '\n'
        + "Your grand total is: " + Purchase.saleAmount);               

    }
}

ご覧のとおり、2 番目のクラスを実行すると、saleAmount には余分な 5% の売上税が含まれず、売上税は 0 のままです。

4

3 に答える 3

0

saleTax、メソッドによって計算されsetSaleAmountます。このメソッドを呼び出すことsaleTaxはないため、 は計算されません。

それ以外の:

                Purchase.saleAmount = inputDevice.nextDouble();

あなたはおそらく欲しい:

                purchase1.setSaleAmount(inputDevice.nextDouble());

また、クラスとオブジェクトの違い、および静的メンバーとインスタンス メンバーの違いを説明するテキストを読みたいと思うかもしれません。しかし、その 1 行のコードを変更するだけで、プログラムは少なくとも機能します。

于 2013-06-22T23:46:40.617 に答える