我在if和else语句中给出的费率未按预期加起来

时间:2019-10-17 06:45:18

标签: java

我制作了一个简单的税金计算器,无论您是单身还是已婚,您的税金都会有所不同。我正在使用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的单人的产出

1 个答案:

答案 0 :(得分:1)

您的代码似乎还不错。试试这个,看看是否可行。没有任何改变;我刚刚初始化了一些变量:

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