Java-函数返回原始初始化值,并跳过if语句

时间:2018-12-15 07:26:44

标签: java function if-statement

此功能的期望输出是在基于年收入的if条件下基本上返回一个百分比。这里的问题是它应该返回新初始化的变量,而只返回原始的初始化。换句话说,该函数仅返回-1并忽略if语句。

package com.businesslogictaxrates;

public class MarginalTaxRate {
    public static float calculate(int year, String martaxcode, float annincome) {
        float mtr = -1;
        if (year == 2017) { // Single taxable income
            if (martaxcode == "S") {
                if (annincome <= 9325) {
                    mtr = 0.1f;
                }else if (annincome <= 37950 && annincome > 9325) {
                    mtr = 0.15f;
                }else if (annincome <= 91900 && annincome > 37950) {
                    mtr = 0.25f;
                }else if (annincome <= 191650 && annincome > 91900) {               
                    mtr = 0.28f;
                }else if (annincome <= 416700 && annincome > 191650) {              
                    mtr = 0.33f;
                }else if (annincome <= 418400 && annincome > 416700) {              
                    mtr = 0.35f;
                }else if (annincome > 418400) {             
                    mtr = 0.396f;
                }
            } // Married Filing Jointly or Qualified Widower
            if (martaxcode == "MFJ" || martaxcode == "QW") {
                if (annincome <= 18650) {
                    mtr = 0.1f;
                }else if (annincome <= 75900 && annincome > 18650) {                
                    mtr = 0.15f;
                }else if (annincome <= 153100 && annincome > 75900) {               
                    mtr = 0.25f;
                }else if (annincome <= 233350 && annincome > 153100) {              
                    mtr = 0.28f;
                }else if (annincome <= 416700 && annincome > 233350) {              
                    mtr = 0.33f;
                }else if (annincome <= 470700 && annincome > 416700) {              
                    mtr = 0.35f;
                }else if (annincome > 470700) {
                    mtr = 0.396f;
                }
            } // Married filing separately
            if (martaxcode == "MFS") {
                if (annincome <= 9325) {
                    mtr = 0.1f;
                }else if (annincome <= 37950 && annincome > 9325) {
                    mtr = 0.15f;
                }else if (annincome <= 76550 && annincome > 37950) {
                    mtr = 0.25f;
                }else if (annincome <= 116675 && annincome > 76550) {               
                    mtr = 0.28f;
                }else if (annincome <= 208350 && annincome > 116675) {              
                    mtr = 0.33f;
                }else if (annincome <= 235350 && annincome > 208350) {              
                    mtr = 0.35f;
                }else if (annincome > 235351) {             
                    mtr = 0.396f;
                }
            } // Head of Household
            if (martaxcode == "HH") {
                if (annincome <= 13350) {
                    mtr = 0.1f;
                }else if (annincome <= 50800 && annincome > 13350) {                
                    mtr = 0.15f;
                }else if (annincome <= 131200 && annincome > 50800) {               
                    mtr = 0.25f;
                }else if (annincome <= 212500 && annincome > 131200) {              
                    mtr = 0.28f;
                }else if (annincome <= 416700 && annincome > 212500) {              
                    mtr = 0.33f;
                }else if (annincome <= 444550 && annincome > 416700) {              
                    mtr = 0.35f;
                }else if (annincome > 444550) {
                    mtr = 0.396f;
                }
            }
        }
        return mtr;
    }
}

我尝试了几件事,但似乎无济于事。它仅输出-1,而不在任何if语句中输出任何内容。当我在另一个类中调用该函数时,它将输出-1.0。

0 个答案:

没有答案