在发帖之前,我试着寻找一个类似于此的答案,所以请放心吧。我使用Java只使用了大约一个半星期。在下面的代码块中,我得到了一个错误,涉及第20行上一个不可访问的if语句,以及一个关于30行缺少的返回语句的错误。我相信我可以将它设置为返回(0);对于最后一个错误,但是对于第一个问题,我似乎无法弄清楚。
class Droid {
int batteryLevel = 100; //created instance variable, batteryLevel
int hours; //created instance var, hours. val not set yet
public void activate() { //created activate method, string type return
System.out.println("Activated. Hello human. How can I help you?");
batteryLevel = batteryLevel - 5; //Set batteryLevel to decrease by 5
System.out.println("Battery level is " + batteryLevel + " percent.");
}
public int chargeBattery(){ //creat int method chargeBattery
System.out.println("Droid charging...");
batteryLevel = batteryLevel + hours; //setting up recharge for droid
return(0); //return 0 or return nothing?
if (batteryLevel > 100) { //If battery level is greater than 100
batteryLevel = 100; //battery level is 100
System.out.println("Your battery level is at " + batteryLevel + " percent");
return(0); //return 0 or return nothing?
}
else { //else, print out battery level
System.out.println("Your battery level is at " + batteryLevel + " percent");
}
}
public static void main(String [] args) { // Main method
}
}发布于 2016-12-13 20:30:41
“问题”是在if语句之前返回。
return (0);
if (whatever)
doSomething;“返回(0)”做了两件事:它立即结束对当前函数的执行,并“返回”执行调用您的函数;它还将"0“传递回函数的调用。因此,在到达if语句之前,您总是要结束函数的执行。
我认为您希望设置您的“返回值”,然后继续执行。这是比较普遍的。创建一个名为"retVal“或什么的新变量,并将其设置为零。然后,当您的函数完成时,执行:
return(retVal);但你似乎也没有非常聪明地使用你的返回值。你似乎只返回"0“。您的函数真正的“输出”是日志记录。似乎您实际上并没有返回有用的数据,所以让您的函数“无效”:
public void chargeBattery(){因为函数并不期望返回值,所以根本不需要返回语句。当您读取函数的末尾时,它将简单地将代码的执行返回到调用函数的位置。如果您想要“尽早”结束执行,那么只需使用:
return;发布于 2016-12-13 20:20:01
是因为您在if语句之前返回了一个值吗?代码将设置batteryLevel,然后返回(0),因此永远不会到达if-语句。
发布于 2016-12-13 21:41:12
这是关于Java方法的基础知识。在您的代码中:
public int chargeBattery(){
System.out.println("Droid charging...");
batteryLevel = batteryLevel + hours;
return(0); //method will exit from this line onwards
//Everything from here onwards will be unreachable
}无论您是用return 0返回一个值,还是只返回return,它都会导致该方法退出自身(并从调用它的位置继续)。
因此,返回语句下面的所有内容都将永远不会到达,和Java 100%肯定永远不会到达它,因为返回语句总是首先运行。
但是,如果return语句包含在if-condition中,则情况就不同了,因为条件仍然有可能失败,因此跳过了return语句:
例如,:
public void myMethod(){
if(whatever)
return;
//Code below may still run if above condition fails
}https://stackoverflow.com/questions/41129824
复制相似问题