2013-04-03 72 views
2

我是學生,這是一個練習,這是此方法的目標: 此方法應返回名稱匹配 名稱的運動員數組的第一個元素參數。如果沒有匹配的運動員,則返回null。返回對象或null時返回語句丟失

出於某種原因,我得到這個錯誤,

TestAthletes.java:15: error: missing return statement 
} 

這是我的代碼:

public class TestAthletes{ 

    public static Athlete findAthleteByName(Athlete[] athletes, String name){ 
     for(int i=0; i<athletes.length; i++){ 
      if(name.equals(athletes[i].getName())) 
       return athletes[i]; 
      else 
       return null; 
     } 
    } 
} 

想不通的問題是什麼。

+0

如果數組爲空,則永遠不會返回。 – SLaks

回答

1

您的return null聲明應該在循環之外。目前如果第一個值不匹配,它將返回null

public static Athlete findAthleteByName(Athlete[] athletes, String name){ 
    for(int i=0; i<athletes.length; i++){ 
     if(name.equals(athletes[i].getName())) 
      return athletes[i]; 
    } 
    return null; 
} 

通過當前發生的事情追蹤。您首次圍繞for循環測試athletes[0]。如果不匹配,if失敗,則執行else,返回null

此外,如果數組長度爲0,for循環中將不會執行任何操作,因此它永遠不會執行return

3

編譯器告訴你,如果你有機會到達方法的末尾,就沒有return語句返回任何東西。在方法塊結束

return null; 

這並不是說你的代碼做你想讓它做什麼,但無論如何,你應該把一個return語句,大概。

1

我認爲你的意思以下

public class TestAthletes{ 

    public static Athlete findAthleteByName(Athlete[] athletes, String name){ 
     for(int i=0; i<athletes.length; i++){ 
      if(name.equals(athletes[i].getName())) 
       return athletes[i]; 
     } 
     return null; 
    } 
} 

在你的原代碼,如果athletes.length是0,那麼你的循環永遠不會執行,並且代碼到達函數的結尾沒有返回任何東西。

另外,我假定你只想返回null如果你沒有在任何迭代中找到匹配,所以這就是爲什麼我在循環後移動了那個返回語句。

2

因爲athletes.length可以爲0,所以您需要在for循環之後有一個return語句,這意味着for循環的主體永遠不會被執行。