vendredi 14 décembre 2018

Java - function returns original initialization value and skips over if statements [duplicate]

This question already has an answer here:

The desired output of this function is to basically return a percentage under an if condition based on annual income. The problem here is that it should be returning the newly initialized variable, but instead just returns the original initialization. In other words, the function simply returns -1 and ignores the if statements.

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

I tried several things but nothing seems to work. It simply outputs -1 and not anything in any of the if statements. When I call the function in another class it outputs -1.0.

Aucun commentaire:

Enregistrer un commentaire