我想返回result
变量,但是eclipse标记为return result;
部分并且说Create local variable 'result'
。
我写的方法:
public E getFromResults(int o)
{
Node tempNode = head;
for(int i=1; i<= size; i++)
{
if(i==o)
{
E result = (E) tempNode.getElement();
break;
}
tempNode=tempNode.getNext();
}
return result;
}
好的,我按照下面的说明进行了操作,现在它正在工作,谢谢你们,感谢你们的回答:
public E getFromResults(int o)
{
Node tempNode = head;
for(int i=1; i<= size; i++)
{
if(i==o)
break;
tempNode=tempNode.getNext();
}
E result = (E) tempNode.getElement();
return result;
}
答案 0 :(得分:1)
public E getFromResults(int o)
{
E result = null;
Node tempNode = head;
for(int i=1; i<= size; i++)
{
if(i==o)
{
result = (E) tempNode.getElement();
break;
}
tempNode=tempNode.getNext();
}
return result;
}
这是由于范围可变。您从嵌套的result
语句中初始化了变量if
,该语句本身位于for
语句中。这意味着if
语句之外的任何内容都无法查看或访问您的result
变量 - 即。该代码块为local
。
如果您要将result
的初始化移至if
块之外但仍位于for
块内,那么for
内部的所有内容都会如此和if
块可以使用它,但是你仍然不能return
result
变量,因为return语句在两个块之外。
有时你会使用变量范围来获得优势,即。如果一段代码需要一些临时的变量和/或永远不应该从代码块外部访问。
答案 1 :(得分:1)
result
变量在if
块的范围内,因此不在其外部。而是在result
循环之外声明for
。
答案 2 :(得分:0)
您必须将变量声明放在循环之外,如果。宣布这样:
public E getFromResults(int o)
{
Node tempNode = head;
E result = null;
for(int i=1; i<= size; i++)
{
if(i==o)
{
result = (E) tempNode.getElement();
break;
}
tempNode=tempNode.getNext();
}
return result;
}
因为不能保证它会经历循环,如果是这样,结果变量在某些时候就不会存在。