java中if语句方法的问题
试图找出如何结束这种方法 在此版本中,最终的“税不能解析为变量”java中if语句方法的问题,java,if-statement,methods,Java,If Statement,Methods,试图找出如何结束这种方法 在此版本中,最终的“税不能解析为变量” public double calculateTax(){ 如果(工资
public double calculateTax(){
如果(工资<9440){
双重税=0;
}
否则{
双倍新工资=工资-9440;
if(newSalary在第一种情况下,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.
}
最后,您的返回值应与第一种情况相同。在任何if
或else
块之外,因为您的方法在所有情况下都需要返回一个双精度值(不是有条件的)。您需要在方法开始时定义它
double tax = 0;
然后在别处引用它(不重新定义它)
tax = newSalary*0.2;
而不是
double tax = newSalary*0.2;
只需这样做,而不是多次申报税款
,这是不必要的
public double calculateTax() {
double tax = 0;
//Other codes here (if else etc)
return tax;
}如果出现以下情况,您需要在境外申报税款:
double tax;
if (salary < 9440){
tax = 0;
}
else {
双重征税;
如果(工资<9440){
税=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;
}
public double calculateTax(){
双重税=0;
双倍工资=工资;
如果(新闻汇编>=9440){
双倍新收入-=9440;
}
如果(newSalary您的代码令人困惑,格式不正确,并且充满了神奇的数字。风格很重要:请更加注意您的代码编写方式。草率的风格使您的代码更难阅读和理解
我可以这样写:
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;
}
public double calculateTax(){
双重税=0.0;
如果(工资<9440){
税=0.0;
}否则{
双倍新工资=工资-9440;
if(newSalary你应该查找变量范围
。请检查你的花括号,并相应地重新缩进你的代码。始终小心地匹配花括号!@Nelly-如果对你有帮助,请回答:)
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;
}
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;
}