将main之外的方法的结果调用main方法中的变量

时间:2013-03-19 23:12:44

标签: java methods

我的作业是为一家补充库存的珠宝店计算税金和附加费,而且我遇到了一些麻烦。我使用一种名为calcExtraTax的方法三次计算人工费率和州和联邦税。然后我需要获取该方法的每个实例的结果,并将值传递给main方法中的相应变量。这就是我的代码现在看起来的样子(显然不完整):

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;
    ???????????
}

我想弄清楚的是我需要在我的辅助方法中放入什么,以便能够每次根据公式中使用的速率变量将结果传递给不同的税收成本变量。 / p>

2 个答案:

答案 0 :(得分:1)

除了将返回类型更改为double并返回计算值之外,您不需要对calcExtraCost执行任何特殊操作。例如

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

因此,此方法将返回计算值。

在main方法中,您需要将该值存储到所需的适当双精度。例如,如果您想计算luxuryTax,那么您可以执行以下操作:

luxuryTax = calcExtraCost(baseCost, luxuryRate);

另外一些建议,而不是使您的方法static,使其成为non-static方法,并创建定义方法的类的对象,并在该对象上调用该方法。 / p>

例如,如果您定义方法的类称为Tax,则创建Tax对象:

Tax tax = new Tax();

并在该对象上调用calcExtraCost

tax.calcExtraCost();

这样就删除了方法的静态部分。所以你的方法签名就像这样:

public double calcExtraCost(double diamond, double rate)

答案 1 :(得分:1)

您可以通过将其签名从diamond*rate更改为void并添加double语句,从帮助方法返回return的值:

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

现在,您可以在main方法中为变量分配调用结果:

laborCost = calcExtraCost(baseCost, laborRate);