从主要方法的调用结果到主要方法中的变量
问题描述:
我的作业是计算补充库存的珠宝店的税金和附加费,而且我碰到了一个小问题。我正在使用一种名为calcExtraTax的方法三次来计算人工费率以及州和联邦税。然后我需要获取该方法的每个实例的结果,并将该值传递给我的主方法中的相应变量。这是我的代码是什么样子,现在(显然不完整):从主要方法的调用结果到主要方法中的变量
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;
???????????
}
我试图搞清楚的是,我需要些什么把我的次要方法,以便能够通过结果根据公式中使用的费率变量,每次都变为不同的税费成本变量。
答
除了将返回类型更改为double并返回计算值之外,您不需要对您的calcExtraCost
做任何特殊处理。例如
public static double calcExtraCost(double diamond, double rate)
{
double extraCharge = diamond*rate;
double tax = //some calculations
return tax
}
所以这个方法会返回计算的值。
在您的主要方法中,您需要将该值存储到所需的相应双精度值。例如,如果你要计算的luxuryTax
,那么你做这样的事情:而不是让你的方法static
luxuryTax = calcExtraCost(baseCost, luxuryRate);
也有一些建议,使之成为non-static
方法,创造一个类的对象,其中的方法被定义,并调用该对象的方法。
例如,如果在这里你定义你的方法被调用税,那么你就创建纳税的某个对象的类:
Tax tax = new Tax();
,并在该对象上调用calcExtraCost
:
tax.calcExtraCost();
这样你删除方法的静态部分。所以,你的方法签名变成这样:
public static double calcExtraCost(double diamond, double rate)
{
return diamond * rate;
}
现在,您可以:
public double calcExtraCost(double diamond, double rate)
答
你可以通过改变其签名从void
到double
并添加return
声明从您的helper方法返回的diamond*rate
值将调用的结果分配给主方法中的变量:
laborCost = calcExtraCost(baseCost, laborRate);
你知道如何从返回值方法](http://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html),还是你只用过'void'方法? – DaoWen 2013-03-19 23:15:14
我只使用过无效方法。 – Sai 2013-03-19 23:16:44
http://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html – James 2013-03-19 23:19:17