public int getEntityIndex(String name){
for(int i = 0; i < entities.length; i++){
if(entities[i].getName().toUpperCase().equals(name.toUpperCase())){
break;
}
}
return i;
}
此代码产生错误:i
无法解析为变量。我猜测在for循环声明中声明的变量超出了方法其余部分的范围,但我无法找到有关此问题的任何信息。
在分析了一段时间之后,我开始看到使用它是一个坏主意(如果entities[i]
永远不等于name
该怎么办?该方法将返回entities.length - 1
,甚至如果找不到匹配项,我认为我会使用while(!found)
方法。
澄清一点,我不是在问如何解决这个问题。我问为什么会出现这种错误。
谢谢!
答案 0 :(得分:1)
您无法在i
循环之外看到for
。
试试这个:
public int getEntityIndex(String name) {
for(int i = 0; i < entities.length; i++){
if(entities[i].getName().toUpperCase().equals(name.toUpperCase())){
return i;
}
}
return -1;
}
PS:你也可以使用
entities[i].getName().equalsIgnoreCase(name)
而不是
entities[i].getName().toUpperCase().equals(name.toUpperCase())
答案 1 :(得分:0)
for i
的范围是for循环:i
只有存在在for循环中。
因此,i
不能在其之外使用。
答案 2 :(得分:0)
i
仅在for
循环中的范围内。除非通过在循环外定义i
或将其分配给循环外的另一个变量来显式扩展范围,否则不能在外部使用它。
请记住,变量的范围仅在 的块中定义。您尝试返回i
,但在循环外不存在i
。
答案 3 :(得分:0)
在最后一行中,您返回i
。但是,变量i
是在for循环的范围内创建的,并且在您尝试返回它的for循环之外不存在。
您可以在for循环中返回i
,而不是“break”。你需要在最后返回别的东西。
您还可以在for循环之外初始化i
。
答案 4 :(得分:0)
i
在for
循环内声明,它的范围仅在循环内。你无法退货,因为它超出了范围。
答案 5 :(得分:0)
循环,一切都很好,但
return i;
..我作为一个变量一旦离开循环就会消失,所以编译器实际上并不知道要返回什么。这是您的错误消息
答案 6 :(得分:0)
您可以使用其他变量返回de值。
public int getEntityIndex(String name){
int j = 0;
for(int i = 0; i < entities.length; i++){
if(entities[i].getName().toUpperCase().equals(name.toUpperCase())){
break;
}
j++;
}
return j;}
答案 7 :(得分:0)
public int getEntityIndex(String name){
for(int i = 0; i < entities.length; i++){
if(entities[i].getName().toUpperCase().equals(name.toUpperCase())){
return i; // If found return [i]
}
}
return -1; //[i] was not found and return = -1;
}