Java 我在if和else语句中给出的比率加起来并不像它们应该加起来的那样

Java 我在if和else语句中给出的比率加起来并不像它们应该加起来的那样,java,Java,我做了一个简单的税务计算器,如果你是单身或已婚,它会以不同的方式计算你的税款。我使用的是JOptionPane,因为这是一项要求,我也不需要将我所有的代码都放在主方法中,我必须使用主方法之外的方法,但在同一个构造函数类中,我已经为单速率创建了两个方法,为已婚速率创建了一个方法 我必须能够允许用户输入他们是单身还是已婚,并能够输入他们的收入。我已经为每个单身或已婚的限制硬编码了双变量。 当我运行该程序时,它没有错误,但它总是返回相同的结果,即我输入的任何值的10%,不管它是否高于单身或已婚限制,

我做了一个简单的税务计算器,如果你是单身或已婚,它会以不同的方式计算你的税款。我使用的是JOptionPane,因为这是一项要求,我也不需要将我所有的代码都放在主方法中,我必须使用主方法之外的方法,但在同一个构造函数类中,我已经为单速率创建了两个方法,为已婚速率创建了一个方法

我必须能够允许用户输入他们是单身还是已婚,并能够输入他们的收入。我已经为每个单身或已婚的限制硬编码了双变量。

当我运行该程序时,它没有错误,但它总是返回相同的结果,即我输入的任何值的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 );

    }
public void single(){
income=Double.parseDouble(JOptionPane.showInputDialog(“输入您的收入($)”));

如果(income你的代码看起来不错。试试看它是否有效。没有任何变化;我刚刚初始化了一些变量:

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 );
}
public void single(){
double singleLimit=32000.0;//使其加倍,因为您的收入是双倍的
double tax1=0.0,tax2=0.0,totalTax=0.0;//将所有税务变量声明为局部变量
income=Double.parseDouble(JOptionPane.showInputDialog(“输入您的收入($)”));

如果(你调试过你的代码吗?singleLimit的值是多少?对不起,我忘了加上singleLimit是32000,没有错误显示这是否是你的意思,它只是没有给出正确的预期输出,我想知道我是否缺少一行代码Rate 1和Rate 2的值是什么,你得到了什么结果?rate1=0.10 rate2=0.25 Income是用户输入AX1和tax2应该是本地变量,在方法中声明,并且都初始化为0。但是无论如何,您需要学习调试代码。逐个执行代码行,并检查变量的值。至少,添加println()语句来了解发生了什么。Modo很有魅力,我刚刚用它们作为局部变量进行了测试,看起来效果很好。感谢堆,这可以标记为已解决