繁体   English   中英

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

[英]Calling results from methods outside main into variables in the main method

我的作业是计算要补充其库存的珠宝店的税金和附加费,我遇到了一点麻烦。 我三次使用一种称为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;
    ???????????
}

我要弄清楚的是我还需要在辅助方法中添加什么,以便每次能够根据公式中使用的费率变量将结果传递到不同的税收成本变量中。

除了将返回类型更改为double并返回计算出的值外,您无需对calcExtraCost做任何特殊的事情。 例如

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

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

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

luxuryTax = calcExtraCost(baseCost, luxuryRate);

另外一些建议,而不是让你的方法static ,使之成为non-static方法,并创造一个定义你的方法的类的对象,并调用该对象的方法。

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

Tax tax = new Tax();

并在该对象上调用calcExtraCost

tax.calcExtraCost();

这样,您可以删除方法的静态部分。 因此,您的方法签名如下所示:

public double calcExtraCost(double diamond, double rate)

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

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

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

laborCost = calcExtraCost(baseCost, laborRate);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM