Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 错误:无法访问的代码_Java_If Statement_Methods - Fatal编程技术网

Java 错误:无法访问的代码

Java 错误:无法访问的代码,java,if-statement,methods,Java,If Statement,Methods,为什么此方法返回错误:错误:无法访问的代码谢谢 public static boolean zeroCheck(double numberTwo, String operator) { if (numberTwo == 0) { return false; if(operator == "/" || operator == "%") System.out.println("You

为什么此方法返回错误:错误:无法访问的代码谢谢

public static boolean zeroCheck(double numberTwo, String operator) {

    if (numberTwo == 0) {
        return false;
        if(operator == "/" || operator == "%")
            System.out.println("You cannot use a zero to divide or mod.");
        } else return true;
    }
}
错误:

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

错误:无法访问的代码


返回一个值,然后再处理从未达到的其余代码。使用
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
不是像
int
double
等那样的基本类型。通常,在比较所有对象时使用
equals(..)

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

返回一个值,然后再处理从未达到的其余代码。使用
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
不是像
int
double
等那样的基本类型。通常,在比较所有对象时使用
equals(..)

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

我想你是想在接线员检查后把报税表弄错。发生的情况是,在代码有机会检查if语句之前,当numberTwo为0时,函数返回,使其成为不可访问的代码。我假设您打算在运算符检查后将返回设置为false。发生的情况是,在代码有机会检查if语句之前,当numberTwo为0时,函数返回,使其成为无法访问的代码

别担心,这是新手的常见误解,不仅仅是你。:-)
return
关键字做两件事:

  • 确定函数的返回值,以及

  • 此时退出函数

  • 新来者有时认为它只做第一件事,而不是第二件事。(有些语言实际上是两种语言分开完成的,Java不是其中之一。)

    因此,在您的示例中,无法访问的代码是
    返回false之后的代码,因为
    返回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;
        }
    }
    

    关于上述代码的几个其他注释:

  • 您不会将Java中的字符串与
    ==
    进行比较,而是使用
    str.equals(otherStr)
    。更多:

  • 请注意,我在内部块周围添加了大括号(附加到
    if(operator.equals…
    )的大括号)。严格来说,它们不是必需的,但是当您在外部块中使用大括号(必须这样做)时,将其从内部块中删除可能会使以后编辑代码的人出错

  • 由于您的
    if
    块以
    return false结束;
    ,因此不需要
    else
    ;您只需跟随
    if
    块的结尾,返回true;
  • 如果进入该块,则无法访问它,因为您当然退出了该函数

  • 如果
    numberTwo
    为0,则上面的代码返回
    false
    ,即使运算符不是
    /
    %
    。我认为您的原始代码就是要这样做的,但我想我会标记它

  • 在上文第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;
    }
    

    别担心,这是新来者常见的误解,不仅仅是你。:-
    return
    关键字有两个作用:

  • 确定函数的返回值,以及

  • 此时退出函数

  • 新来者有时认为它只做第一件事,而不是第二件事。(有些语言实际上是两种语言分开完成的,Java不是其中之一。)

    因此,在您的示例中,无法访问的代码是
    返回false之后的代码,因为
    返回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;
        }
    }
    

    关于上述代码的几个其他注释:

  • 您不会将Java中的字符串与
    ==
    进行比较,而是使用
    str.equals(otherStr)
    。更多:

  • 请注意,我在内部块周围添加了大括号(附加到
    if(operator.equals…
    )的大括号)。严格来说,它们不是必需的,但是当您在外部块中使用大括号(必须这样做)时,将其从内部块中删除可能会使以后编辑代码的人出错

  • 由于您的
    if
    块以
    return false结束;
    ,因此不需要
    else
    ;您只需跟随
    if
    块的结尾,返回true;
  • 如果进入该块,则无法访问它,因为您当然退出了该函数

  • 如果
    numberTwo
    为0,则上面的代码返回
    false
    ,即使运算符不是
    /
    %
    。我认为您的原始代码就是要这样做的,但我想我会标记它

  • 在上文第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;
    }
    

    返回的句子应该放在最后。欢迎使用Stack Overflow!在发布之前一定要搜索可能重复的问题。我投票结束这个问题,因为我同意上面的Brian。哦,是的,这是一个重复的问题,我下次会更彻底地搜索。请关闭它。@JasonIvey:完成。即使问题已结束。请享受您的Java学习!返回的句子应该放在最后。欢迎使用Stack Overflow!请确保在po之前搜索可能重复的问题