Stu*_*t94 2 java methods if-statement
试图找出如何完成这个方法
有了这个版本,最终的"税收无法解决为变量"
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;
}
Run Code Online (Sandbox Code Playgroud)
但是,使用此版本的"方法不会返回double类型的结果"
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不能为这个项目定义一个单独的税收字段 - 我应该在哪里提交退税?谢谢 :)
在第一种情况下,tax它位于if和else块之内,因此在它们之外不可见.因此返回语句中的错误.
在第二种情况下,return它位于an内部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.
}
Run Code Online (Sandbox Code Playgroud)
最后,你return应该像第一种情况一样.在任何一个if或多个else块之外,因为您的方法return在所有情况下都需要一个double值(不是有条件的).