This question already has an answer here:
- How do I compare strings in Java? 23 answers
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