无法访问If Statement

时间:2016-12-13 20:16:16

标签: java if-statement compiler-errors return

我试着在发布之前搜索类似的答案,所以请对我这么轻松。我只用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 
  }
}

5 个答案:

答案 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)以修复无法访问的错误