错误:无法访问的代码

时间:2016-03-22 18:19:49

标签: java if-statement methods

为什么这个方法会返回错误:错误:无法访问的代码谢谢!

function promptTest(){
    var element0 = prompt('Enter element name');
    if ( element0 == null || element0 == '' || element0 == false || !element0 ) { 
        alert('cancelled!')
        return false; 
    }
    else{
        return element0.toUpperCase();
    }

}

var promptVar = promptTest();
while (promptVar && promptVar !== 'TEST' )
{
    promptVar = promptTest();
}

错误:

  

文件:C:\ JAVA \ LABS \ LabSix.java [line:228]

     

错误:无法访问的代码

3 个答案:

答案 0 :(得分:2)

在您获得从未到达的其余代码之前,您return一个值。当您使用return语句时,它会自动结束代码并在您的案例中返回boolean

只需将return语句放在块的末尾。

public static boolean zeroCheck(double numberTwo, String operator) {    
   if (numberTwo == 0) {      
      if (operator == "/" || operator == "%") {
         System.out.println("You cannot use a zero to divide or mod.");
      }
      return false;
   } else return true
}

顺便说一下,如果你想比较String,请使用equals(..)方法,因为String不是intdouble这样的原始类型等等。通常,在比较所有对象时使用equals(..)

if (operator.equals("/") || operator.equals("%"))

答案 1 :(得分:2)

我假设您打算在操作员检查后将返回值设为false。当代码有机会检查if语句之前,当numberTwo为0时函数返回,使得这个函数成为无法访问的代码

答案 2 :(得分:1)

别担心,这是对新手的常见误解,不仅仅是你。 :-) return关键字执行两个事情:

  1. 确定函数的返回值,以及

  2. 此时退出该功能

  3. 新人有时认为它只是第一次,而不是第二次。 (并且有两种语言实际上是单独完成的,Java就不是其中之一。)

    因此,在您的示例中,无法访问的代码是return false;之后的代码,因为执行return false;语句时它会退出函数。

    将它放在该块中的其他代码之后:

    public static boolean zeroCheck(double numberTwo, String operator)
    {
        if (numberTwo == 0)
        {
            if (operator.equals("/") || operator.equals("%"))
            {
                System.out.println("You cannot use a zero to divide or mod.");
            }
            return false;
        }
        else // See note #3 below, you don't really need this
        {
            return true;
        }
    }
    

    关于上述代码的其他几点说明:

    1. 您不使用==将Java中的字符串与str.equals(otherStr)进行比较。更多:How do I compare strings in Java?

    2. 请注意,我在内部块(附加到if (operator.equals...的附件)周围添加了大括号。它们并非严格说来是必要的,但是当你在外部块(你必须使用)中使用大括号时,将它们从内部区块中移除可能会使某些人稍后编辑代码。

    3. 由于您的if数据块以return false;结尾,因此无需else;你可以跟if块的末尾跟return true;一样。如果你进入区块就无法到达,因为你退出了这个功能。

    4. 如果false为0,则上述代码会返回numberTwo,即使运算符不是/%。这就是我认为你的原始代码要做的事情,但我想我会把它标记出来。

    5. 上面的#3,另一种选择是记住变量中的返回值:

      public static boolean zeroCheck(double numberTwo, String operator)
      {
          boolean numberTwoIsZero = numberTwo == 0;
          if (numberTwoIsZero)
          {
              if (operator.equals("/") || operator.equals("%"))
              {
                  System.out.println("You cannot use a zero to divide or mod.");
              }
          }
          return numberTwoIsZero;
      }