Java 为什么它说我的If语句不可访问?

Java 为什么它说我的If语句不可访问?,java,Java,编译器表示在带有if语句的行上无法访问该语句。我对Java不太熟悉 public double calculate() { total_usage_charge = getUsageCharge(); total_charge = rate + total_usage_charge; return total_charge; if("A".equals(package_plan.toUpperCase()) && getUsageCharge() > 1

编译器表示在带有
if
语句的行上无法访问该语句。我对Java不太熟悉

public double calculate()
{
  total_usage_charge = getUsageCharge();
  total_charge = rate + total_usage_charge;

  return total_charge;

  if("A".equals(package_plan.toUpperCase()) && getUsageCharge() > 14.95)
  {
    sB = getUsageCharge() - 14.95;
    System.out.println("You're spending more money than you should. If you switched to Plan B you would save:$" + sB);
  }
}

您从方法返回(
returntotal_charge;
),就在
if
语句之前。
返回后的任何代码都不能执行(如果您的return语句位于
try…catch…finally
中,则相关的
finally
块除外)。

因为您通过执行以下命令从方法返回:

return total_charge;

因此,下一条语句永远不会执行。

在调用if语句之前返回,因此它是不可检查的

方法在到达return语句时返回调用它的代码

您的方法此时返回,任何代码都无法访问。

**if(“A”.equals(package_plan.toUpperCase())&&getUsageCharge()>14.95)
**if("A".equals(package_plan.toUpperCase()) && getUsageCharge() > 14.95)
        {
            sB = getUsageCharge() - 14.95;
            System.out.println("You're spending more money than you should. If you switched to Plan B you would save:$" + sB);
        }
        else if("A".equals(package_plan.toUpperCase()) && getUsageCharge() > 19.95)
        {
            sC = getUsageCharge() - 19.95;
            System.out.println("You're spending more money than you should. If you switched to Plan C you would save:$" + sC);
        }
        else if("B".equals(package_plan.toUpperCase()) && hours < 10)
        {
            sA = getUsageCharge() - 9.95;
            System.out.println("You're spending more money than you should. If you switched to Plan A you would save:$" + sA);
        }
        else if("B".equals(package_plan.toUpperCase()) && getUsageCharge() > 19.95)
        {
            sC = getUsageCharge() - 19.95;
            System.out.println("You're spending more money than you should. If you switched to Plan C you would save:$" + sC);**
        }**
{ sB=getUsageCharge()-14.95; System.out.println(“你花的钱比你应该花的多。如果你改用B计划,你会节省:$”+sB); } 否则,如果(“A”.equals(package_plan.toUpperCase())&&getUsageCharge()>19.95) { sC=getUsageCharge()-19.95; System.out.println(“你花的钱比你应该花的多。如果你改用C计划,你会节省:$”+sC); } 否则,如果(“B”。等于(包计划toUpperCase())&小时<10) { sA=getUsageCharge()-9.95; System.out.println(“你花的钱比你应该花的多。如果你改用A计划,你会节省:$”+sA); } else if(“B”.equals(package_plan.toUpperCase())&&getUsageCharge()>19.95) { sC=getUsageCharge()-19.95; System.out.println(“你花的钱比你应该花的多。如果你改用C计划,你会节省:$”+sC)** }**
你是否打算评论它,如果是的话,就把它做好。或者,根据提供的代码,这是错误和无法访问的语句


/*您的代码对其进行注释*/

如果您在上面添加了返回语句,请在上面添加注释。所以,当编译器每次从该语句返回时都出现在该语句上,并且如果不能在任何时候执行,则删除该语句或将其置于if条件下

public double calculate()
{
  total_usage_charge = getUsageCharge();
  total_charge = rate + total_usage_charge;

  if("A".equals(package_plan.toUpperCase()) && getUsageCharge() > 14.95)
  {
    sB = getUsageCharge() - 14.95;
    System.out.println("You're spending more money than you should. If you switched to Plan B you  would save:$" + sB);
  }

  return total_charge;
}

就这样;)

返回语句后将不执行代码。下面的代码块导致问题,即

return total_charge;

所以你必须把这条线移走或放在最后

哦。。。。好的,谢谢。我很抱歉。这可能是非常明显的事情,但我对Java非常不擅长。感谢你对我的愚蠢问题如此耐心。甚至我在大学刚毕业时也会问愚蠢的问题:)你回答了我非常愚蠢的问题,这意味着很多。我删除了帮助案例和其他杂乱无章的问题。请尝试删除不需要的代码,以帮助我们(和您!)关注实际问题。如果编译器说某些语句无法访问,则意味着在代码执行期间无法访问该语句。编译器可以在编译时发现一些无法访问的代码(例如:在最后一个语句之前返回,if(false){statement},等等)。但要小心,因为编译器无法找到所有的情况,因为程序执行路径依赖于以前执行的语句,所以您必须注意。我想应该突出显示。
return total_charge;