我试着在发布之前搜索类似的答案,所以请对我这么轻松。我只用Java工作了大约一个半星期。在下面的代码块中,我收到一个错误,关于第20行的无法访问if语句,以及关于30上缺少return语句的错误。我相信我可以将其设置为return(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
}
}
答案 0 :(得分:2)
是因为你在if语句之前返回一个值吗?代码将设置batteryLevel然后返回(0),因此永远不会到达if语句。
答案 1 :(得分:2)
“问题”是你在if语句之前返回。
return (0);
if (whatever)
doSomething;
“return(0)”做两件事:它立即结束你当前函数的执行,并“返回”执行你调用的函数;并且它还将“0”传递回您的函数调用。因此,在到达if语句之前,您总是会结束函数的执行。
我认为您想设置“返回值”然后继续执行。这是比较常见的。创建一个名为“retVal”的新变量,然后将其设置为零。然后当你的功能完成后执行:
return(retVal);
但您似乎也没有非常智能地使用您的返回值。你似乎只返回“0”。而函数的真正“输出”是日志记录。看起来你实际上并没有返回有用的数据,所以让你的函数“无效”:
public void chargeBattery(){
由于函数不期望返回值,因此根本不需要返回语句。当您阅读函数的结尾时,它只会将代码的执行返回到调用函数的位置。如果您想“提前”结束执行,那么只需使用:
return;
答案 2 :(得分:1)
嗯,这是关于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
语句:< / p>
例如:
public void myMethod(){
if(whatever)
return;
//Code below may still run if above condition fails
}
答案 3 :(得分:0)
如前所述,你在if语句之前返回0 你需要退货吗?因为你可以改变
public int chargeBattery() -> public void chargeBattery()
然后你可以删除返回的声明。
答案 4 :(得分:-1)
System.out.println(&#34; Droid charge ...&#34;); batteryLevel = batteryLevel + hours; //为机器人设置补给 返回(0); //返回0或什么都不返回?
由于返回(0)低于batteryLevel = batteryLevel +小时的if语句和所有无法访问的代码,请删除return(0)以修复无法访问的错误