2016-09-15 495 views
0

如何返回for循環的元素?返回for循環外的for循環的一個元素

private List<String> list = new ArrayList<String>(); 
//we only neeed one good element of the list 
    String find(){ 
     for (int i=0; i<list.size(); i++){ 
      if (list.get(i).isGood()) { 
       return list.get(i); 
      } 
     } 
    return list.get(i); //doesn't work obviously, but how to make it work? 
} 

它不編譯,因爲沒有返回語句。我想返回list.get(i)。

+0

如果您有return語句,則不需要break語句。 – Eran

+0

爲什麼打破? return語句結束該方法。 –

回答

3

調用break之後return調用是不必要的,因爲方法退出return語句後。因此break語句不可能被執行,這就是爲什麼這個代碼不能編譯。

此外,你還需要一個returnthrow語句情況下,循環沒有返回值的形式循環之後,例如:

String find(){ 
    for (int i=0; i<list.size(); i++){ 
     if (list.get(i).isGood()) { 
      return list.get(i); 
     } 
    } 
    return null; 
} 
+0

這不是沒有必要的。這是一個錯誤,無法訪問的代碼語句。 –

+0

好吧,我明白,休息是不必要的,但我不想返回null或否則它會太容易,用空它會編譯,但它不是我想要的 – jiji

0

您不需要break,因爲您已撥打return。它從調用return的行中退出該方法。所以你不必考慮打破循環。

瞭解更多關於return

0

當從當前函數達到return指令立即代碼出口 ,因此不會接受任何以下行,因爲永遠不會到達。

0

break;調用不可達代碼語句。 任何代碼早午餐都應該有return語句。 使用Stream API:

String find() { 
    return list.stream() 
       .filter(Clazz::isGood) 
       .findFirst() 
       .get(); 
}