2017-06-30 24 views
-2

這是一個方法嘗試,我用我的程序中使用我正在做一個獨特的價值java程序。我的錯誤

static int check(int pos) { 
    int i, flag = 0; 
    for (i = 0; i < pos; i++) { 
     if (a[pos] == a[i]) { 
      flag = 1; 
      return 1; 
     } 
    } 
    if (flag == 0) 
     return 0; 
} 

當我編譯它,我得到以下錯誤:

Distinct.java:16: error: missing return statement
}
^
1 error

+0

該標誌是不必要的。當你得到一個匹配時,只需從循環中返回1,並在函數結束時返回0。 – JJJ

+0

如果您要求人們嘗試閱讀,則應該正確縮進代碼。 – khelwood

+0

編譯器只是找到了一個不會返回任何東西的路徑:如果最後一個if的條件是false,那麼就沒有返回 - 編譯器沒有發現那個標誌在那裏總是爲0 ... –

回答

1

會發生什麼時,既不

if (a[pos] == a[i]) 

也不if (flag == 0)條件符合?

那麼你有一個代碼不覆蓋所有可能的情況下,你的方法必須返回的東西,無論遇到什麼情況!

+0

而你的返回值是在if條件中...... –

+1

如果第一個條件從未滿足,則標誌始終爲0,因此如果沒有返回語句,程序無法到達函數的末尾。當然,編譯器不會分析代碼,所以它不知道。 – JJJ

+0

此方法用於檢查傳遞的元素位置是否具有與之前相同的元素。返回1表示該元素存在(即位置'pos'之前的重複元素)。返回0表示元素不存在(即它是唯一元素) –

相關問題