此功能的期望输出是在基于年收入的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。