java - 用java中的阈值和税率计算欠税

标签 java algorithm methods

对于我作为学校作业的收入计划的一部分,我必须计算一个数字,即公民所欠的总税款。我在一个文本文件中给出了阈值的数量、阈值和每个阈值的速率。一个例子是

Threshold   Rate
$15,000 15%
$29,000 20%
$50,000 25%

净收入为 55,000 美元的公民将支付: 15,000 美元*0%+14,000 美元*15%+21,000 美元*20%+5,000 美元*25% = 7,550 美元

我的方法从这里开始

private void computeTaxOwed(Citizen cit, TaxSchedule sked){

    double netIncome = cit.getNetIncome();
    double totTaxPaid = cit.getTotTaxPaid();

    int levels = sked.getNumLevels();
    double[] threshold = sked.getThreshold();
    double[] rate = sked.getRate();

    double taxOwd = 0;

    for(int i = levels; i>0; i--){
        taxOwd = ((netIncome-threshold[i])*rate[i]);
    }

我知道这不会给出正确的输出,我只是不知道如何让这个算法起作用。如果我可以提取两个数组的值并将它们分别保存到一个单独的变量中,我可以轻松获得正确的输出,但我认为这非常困惑,不是最好的方法。

任何想法将不胜感激!

最佳答案

AlfaTek 的建议答案不处理 0-15000 括号中的速率不为零的情况,因为 i > 0 而不是 i >= 0 作为他的 for 循环的终止条件。以下代码段处理此问题:

    double netIncomeLeft = netIncome;
    double taxOwd = 0;

    for (int i = threshold.length - 1; i >= 0; i--) {
        if(netIncomeLeft < threshold[i]) {
            //continue on if current tier is greater than the remainder
            continue; 
        }

        taxOwd += (netIncomeLeft - threshold[i]) * rate[i] / 100.0;
        netIncomeLeft = threshold[i];
    }

关于java - 用java中的阈值和税率计算欠税,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5099672/

相关文章:

java - 使用 Java 构建的 XML 中的 UTF-8

algorithm - 将随机范围从 1-5 扩展到 1-7

Java:根据字符串的内容创建一个对象

java - 如何在Java中访问WADL文件中的方法?

python - 当在前一个循环中找到某个字符时,如何开始新的循环?

java - 与客户端 PC 上的 MS Office 通信

java - 用这两种方式创建对象有什么区别?

java - Android:在运行时多次检查另一个类的方法

arrays - 重新排序数组,使其按相同元素分组

r - 根据 R 中的另一个点数据集为多边形中的每个点着色