试图弄清楚如何完成这个方法
使用此版本,最终的税收无法解析为变量"
public double calculateTax() {
if (salary < 9440){
double tax = 0;
}
else {
double newSalary = salary - 9440;
if (newSalary <= 32010) {
double tax = newSalary*0.2;
} else {
double tax1 = 32010*0.2;
double tax2 = (newSalary - 32010)*0.4;
double tax = tax1 + tax2;
}
}
return tax;
}
但是,使用此版本时,&#34;方法不会返回double类型的结果&#34;
public double calculateTax() {
if (salary < 9440){
double tax = 0;
} else {
double newSalary = salary - 9440;
if (newSalary <= 32010) {
double tax = newSalary*0.2;
} else {
double tax1 = 32010*0.2;
double tax2 = (newSalary - 32010)*0.4;
double tax = tax1 + tax2;
return tax;
}
}
}
我无法为此项目定义单独的税收字段 - 我应该在哪里提交退税?谢谢:))
答案 0 :(得分:7)
在第一种情况下,tax
位于if
和else
块内,因此在其外部不可见。因此返回语句中的错误。
在第二种情况下,return
位于else
内,这使其成为条件返回。因此第二个错误。
所有这些归结为一个名为scope
的概念。变量的范围在它定义的块内。它不能在其声明范围之外访问。范围可以是方法级别,块级别,实例级别等。
在方法的开头声明tax
变量,在任何块之外,它将起作用。
public double calculateTax() {
double tax; // Declare here
..
// Now remove double keyword from every other place where you've used tax
// Use the tax created at the beginning of the method all around.
}
最后,您的return
应该与第一种情况一样。在任何if
或else
块之外,因为您的方法在所有情况下都需要return
一个双精度值(非条件)。
答案 1 :(得分:0)
您需要在方法的开头定义它。
double tax = 0;
然后在别处引用它(不重新定义它)。例如
tax = newSalary*0.2;
而不是
double tax = newSalary*0.2;
答案 2 :(得分:0)
就这样做,而不是多次声明tax
,这是不必要的。
public double calculateTax() {
double tax = 0;
//Other codes here (if else etc)
return tax;
}
答案 3 :(得分:0)
您需要在if:
之外申报税double tax;
if (salary < 9440){
tax = 0;
}
else {
答案 4 :(得分:0)
只需在方法开头声明tax
变量(即不在任何if
块内),并在结尾处返回:
public double calculateTax() {
double tax = 0;
double newSalary = salary;
if (newSalary >= 9440) {
double newSalary -= 9440;
}
if (newSalary <= 32010) {
double tax = newSalary*0.2;
}
else {
double tax1 = 32010*0.2;
double tax2 = (newSalary - 32010)*0.4;
tax = tax1 + tax2;
}
return tax;
}
注意:我尽可能保留您的变量名称和流量,以使答案更容易理解。但是,您应该使用double
文字而不是int
文字(例如,32010.0
代替32010
) - 或者更好,double
常量。
答案 5 :(得分:0)
您的代码令人困惑,格式错误,并且充斥着神奇的数字。风格很重要:更注重编写代码的方式。邋style的风格使您的代码更难阅读和理解。
我可能这样写:
public double calculateTax() {
double tax = 0.0;
if (salary < 9440) {
tax = 0.0;
} else {
double newSalary = salary - 9440;
if (newSalary <= 32010) {
tax = newSalary*0.2;
} else {
double tax1 = 32010*0.2;
double tax2 = (newSalary - 32010)*0.4;
tax = tax1 + tax2;
}
}
return tax;
}
或者我可能不会。不好的东西。