我有一个方法,它一直给我编译错误。起初我有一个if和else语句的return语句。我无法使用2个返回语句,因此我将其改为现在的状态。
错误消息现在表示它无法找到变量' x'。我将return语句放在上一组{}中,但仍然没有用。因此,我不确定是否必须完全重新设计我的方法,或者这是否是一个简单的解决方法。
public static boolean equalN(int [] holdN){
for(int i=0;i<=holdN.length;i++){
int k=1;
boolean x;
if(holdN[i]==holdN[k]){
k++;
x=true;
}
else{
x=false;
}
}
return x;
}
答案 0 :(得分:1)
在方法结束时无法返回x
的原因是它是在循环内定义的,因此它的范围在您想要返回之前结束。
同样适用于变量k
;好消息是你不需要其中任何一个。
起初我有if和else语句的return语句。
您可以使用两个return
语句:
return
语句应位于if
内:一旦检测到您的循环正在查找的项目,请返回true
return
语句位于循环结束后方法的末尾。达到这一点的唯一方法是循环永远不会从中间返回,这意味着没有找到任何项目。因此,您返回false
。答案 1 :(得分:0)
变量范围是你的问题:
.expand-icon
}
要解决编译问题,您应该在for循环上方移动x的声明。
for(int i=0;i<=holdN.length;i++){
...
boolean x;
// x exists and is valid here
...
}
// but x doesn't exist here
return x; // this will fail compilation
}
有关详细说明,请参阅this SO question about variable scoping。