首页 > 解决方案 > 我在 if 和 else 语句中给出的费率没有按应有的方式加起来

问题描述

我制作了一个简单的税务计算器,如果您单身或已婚,它将以不同的方式计算您的税款。我正在使用 JOptionPane,因为这是一项要求,而且我还需要不要将所有代码放在 main 方法中,我必须使用 main 方法之外的方法,但在同一个构造函数类中,我为单一速率制作了两个和一种结婚率的方法。

我必须能够允许用户输入他们是单身还是已婚,并且能够输入他们的收入。尽管对于每个单身或已婚限制,我都对双变量进行了硬编码。.

当我运行该程序时,它没有错误,但它总是返回相同的结果,即我输入的任何值的 10%,不管它是否高于单身或已婚限制,我不确定为什么会发生这种情况,感谢任何帮助。

我尝试在每种方法中设置变量,并尝试将所有变量放在方法之外(我被告知我不能这样做,但正在测试它是否有所作为)

这是我在第二种方法中重复过的一种方法,所以两者都没有太多的意义

    public void single() {
        income = Double.parseDouble(JOptionPane.showInputDialog("Enter your income ($)"));
        if (income <= singleLimit)  { // singleLimit = 32000 (mentioned in the comments)
            tax1 = rate1 * income; // rate1 = 0.10
        }   else    {
            tax1 = rate1 * singleLimit; 
            tax2 = rate2 * (income - singleLimit); // rate2 = 0.25
        }
        double totalTax = tax1 + tax2;
        JOptionPane.showMessageDialog(null,
                "Taxable income for a single person wil be $" + totalTax );

    }

我预计收入为 20,000 的单身人士的
产出 = 2,000 我预计收入为 40,000 的单身人士的产出 = 6,000

标签: java

解决方案


您的代码似乎没问题。试试这个,看看它是否有效。没有这样的变化;我刚刚初始化了一些变量:

public void single() {
    double singleLimit = 32000.0; // making it double because your income is in double
    double tax1 = 0.0, tax2 = 0.0, totalTax = 0.0; // declaring all tax variables as local variables

    income = Double.parseDouble(JOptionPane.showInputDialog("Enter your income ($)"));

    if (income <= singleLimit)  {
        tax1 = rate1 * income;
    } else {
        tax1 = rate1 * singleLimit;
        tax2 = rate2 * (income - singleLimit);
    }
    double totalTax = tax1 + tax2;

    JOptionPane.showMessageDialog(null, "Taxable income for a single person wil be $" + totalTax );
}

推荐阅读