如何使此方法返回到该循环中的该变量

时间:2014-12-05 15:49:01

标签: java

我想返回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;
 }

3 个答案:

答案 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;
}

因为不能保证它会经历循环,如果是这样,结果变量在某些时候就不会存在。