1

私の宿題は、在庫を補充している宝石店の税金と追加料金を計算することですが、少し問題が発生しました。calcExtraTax というメソッドを 3 回使用して、労働率と州税および連邦税を計算しています。次に、そのメソッドの各インスタンスの結果を取得し、その値をメイン メソッドの適切な変数に渡す必要があります。これは私のコードが今どのように見えるかです (明らかに完全ではありません):

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

public static void main(String[] args)
{

double stateRate = 0.1;
double luxuryRate = 0.2;
double laborRate = 0.05;
double extraCharge;
int numOrdered;
double diamondCost;
double settingCost;
double baseCost;
double totalCost;
double laborCost;
double stateTax;
double luxuryTax;
double finalAmountDue;

    Scanner keyInput = new Scanner(System.in);

    System.out.println("What is the cost of the diamond?");
    diamondCost = keyInput.nextDouble();
    System.out.println("What is the cost of the setting?");
    settingCost = keyInput.nextDouble();
    System.out.println("How many rings are you ordering?");
    numOrdered = keyInput.nextInt();

    baseCost = diamondCost + settingCost;
    calcExtraCost(baseCost, laborRate);
    laborCost = extraCharge;
    calcExtraCost(baseCost, stateRate);
    stateTax = extraCharge;
    calcExtraCost(baseCost, luxuryRate);
    luxuryTax = extraCharge;
    totalCost = baseCost + laborCost + stateTax + luxuryTax;
    finalAmountDue = numOrdered*totalCost;
    JOptionPane.showMessageDialog(null, "The final amount due is = " + finalAmountDue);
}
public static void calcExtraCost(double diamond, double rate)
{
    double extraCharge = diamond*rate;
    ???????????
}

私が理解しようとしているのは、式で使用されるレート変数に応じて、毎回異なる税コスト変数に結果を渡すことができるようにするために、2 次メソッドに他に何を入れる必要があるかということです。

4

2 に答える 2

1

署名を からにdiamond*rate変更し、ステートメントを追加することで、ヘルパー メソッドからの値を返すことができます。voiddoublereturn

public static double calcExtraCost(double diamond, double rate)
{
    return diamond * rate;
}

これで、呼び出しの結果をメイン メソッドの変数に割り当てることができます。

laborCost = calcExtraCost(baseCost, laborRate);
于 2013-03-19T23:20:39.017 に答える
1

calcExtraCost戻り値の型を double に変更して計算値を返す以外に、特別なことをする必要はありません。例えば

public static double calcExtraCost(double diamond, double rate)
{
    double extraCharge = diamond*rate;
    double tax = //some calculations
    return tax
}

したがって、このメソッドは計算された値を返します。

メイン メソッドでは、その値を必要な適切な double に格納する必要があります。たとえば、 を計算する場合は、次のluxuryTaxようにします。

luxuryTax = calcExtraCost(baseCost, luxuryRate);

また、メソッドを作成する代わりにstaticnon-staticメソッドを作成し、メソッドが定義されているクラスのオブジェクトを作成し、そのオブジェクトでメソッドを呼び出すというアドバイスもあります。

たとえば、メソッドを定義したクラスが Tax である場合、Tax のオブジェクトを作成します。

Tax tax = new Tax();

calcExtraCostそしてそのオブジェクトを呼び出します:

tax.calcExtraCost();

このようにして、メソッドの静的部分を削除します。したがって、メソッドの署名は次のようになります。

public double calcExtraCost(double diamond, double rate)
于 2013-03-19T23:19:21.907 に答える