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;