好的,所以无论我尝试什么,这个程序都不起作用,它只是说可变税不能初始化。我可以拥有的唯一属性是收入,因此我无法在此代码之上申报税。我发现代码实际上可以编译,如果我这样做,显然这会导致过时的数据,所以它没用。请帮忙!!
public double getTaxRate()
{
double tax;
if(income == 406751)
tax = 39.6;
else if(income <= 406750)
if(income > 405100)
tax = 35;
else if(income <= 405100)
if(income > 106350)
tax = 33;
else if(income <= 106350)
if(income > 89530)
tax = 28;
else if(income <= 89350)
if(income > 36900)
tax = 25;
else if(income <= 36900)
if(income > 9075)
tax = 15;
else if(income == 9075)
tax = 10;
return tax;
}
答案 0 :(得分:2)
由于您没有提供收入大于406751且没有其他情况的情况,因此您可以在没有初始化tax
的情况下达到return语句。正如已经建议的那样,将其初始化为某些默认值(如0.0)应该会有所帮助,即使您知道它永远不会被使用。
答案 1 :(得分:1)
income
的值不会导致设置tax
,例如406751以上的任何值或9075以下的任何值。
除了将税的初始值设置为0.0之外,您的代码还可以简化:
public double getTaxRate()
{
double tax = 0.0;
if(income == 406751)
tax = 39.6;
else if(income <= 406750)
if(income > 405100)
tax = 35;
else if(income > 106350)
tax = 33;
else if(income > 89530)
tax = 28;
else if(income > 36900)
tax = 25;
else if(income > 9075)
tax = 15;
else if(income == 9075)
tax = 10;
return tax;
}
使用{和}通常更清楚地表明正在为if语句的真或假案例执行哪些代码:
public double getTaxRate()
{
double tax = 0.0;
if(income == 406751) {
tax = 39.6;
} else if(income <= 406750) {
if(income > 405100) {
tax = 35;
} else if(income > 106350) {
tax = 33;
} else if(income > 89530) {
tax = 28;
} else if(income > 36900) {
tax = 25;
} else if(income > 9075) {
tax = 15;
} else if(income == 9075) {
tax = 10;
}
}
return tax;
}
答案 2 :(得分:1)
您必须声明并初始化变量&#34; tax&#34;。由于它是一个双精度型,你可以给它一个零值,比如;
double tax = 0.0;
答案 3 :(得分:1)
因此您的代码存在一些问题。在我继续向您展示正确的版本之前,我将尝试向您解释为什么会出现此错误。如果您使用以下形式的结构:
if (x > somenumber) {
// do something
} else if (x <= somenumber) {
// do something else
}
你实际上并不认为x未被初始化(在Java中意味着x将 null )。所以你可能会返回null。要避免此问题,您可以在开头将变量税设置为0。基本上这意味着如果收入未初始化(或者与if语句不匹配,例如,如果收入为2),您将返回0。
你的代码也很糟糕。考虑在未来为税收添加一些额外的案例,您的方法将越来越广泛。除此之外,您可能希望使用{和}来构造if语句的主体,如此处所述。
public double getTaxRate() {
double tax = 0; // could also been set to 0.0 since it's a double
if (income == 406751) {
tax = 39.6;
} else if (income <= 406750 && income > 405100) {
tax = 35;
} else if (income <= 405100 && income > 106350) {
tax = 33;
} else if (income <= 106350 && income > 89530) {
tax = 28;
} else if (income <= 89530 && income > 36900) {
tax = 25;
} else if (income <= 36900 && income > 9075) {
tax = 15;
} else if (income == 9075) {
tax = 10;
}
return tax; // if income is lower than 9075 it will return 0
}
你注意到它看起来比你的代码更干净。和&amp;&amp;我用过的运算符基本上是指<em>和。因此,只有当两个语句都为真时,才会输入if块的主体。在您的情况下,这可以让您显着缩短代码。
除此之外,我还有一个问题:收入必须是属性吗?我不知道整个班级的样子,但把收入作为争论的方式对我来说似乎更合理。
答案 4 :(得分:0)
尝试像这样初始化它:
double tax = 0.0;