为什么这个方法会返回错误:错误:无法访问的代码谢谢!
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]
错误:无法访问的代码
答案 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
不是int
或double
这样的原始类型等等。通常,在比较所有对象时使用equals(..)
。
if (operator.equals("/") || operator.equals("%"))
答案 1 :(得分:2)
我假设您打算在操作员检查后将返回值设为false。当代码有机会检查if语句之前,当numberTwo为0时函数返回,使得这个函数成为无法访问的代码
答案 2 :(得分:1)
别担心,这是对新手的常见误解,不仅仅是你。 :-) return
关键字执行两个事情:
确定函数的返回值,以及
此时退出该功能
新人有时认为它只是第一次,而不是第二次。 (并且有两种语言实际上是单独完成的,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;
}
}
关于上述代码的其他几点说明:
您不使用==
将Java中的字符串与str.equals(otherStr)
进行比较。更多:How do I compare strings in Java?
请注意,我在内部块(附加到if (operator.equals...
的附件)周围添加了大括号。它们并非严格说来是必要的,但是当你在外部块(你必须使用)中使用大括号时,将它们从内部区块中移除可能会使某些人稍后编辑代码。
由于您的if
数据块以return false;
结尾,因此无需else
;你可以跟if
块的末尾跟return true;
一样。如果你进入区块就无法到达,因为你退出了这个功能。
如果false
为0,则上述代码会返回numberTwo
,即使运算符不是/
或%
。这就是我认为你的原始代码要做的事情,但我想我会把它标记出来。
上面的#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;
}