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;
}