2015-10-30 102 views
0

我有這樣一段代碼:的foreach循環語法錯誤

private V[] elements; 

public int size(){ 
    int returnValue = 0; 
    for(TableEntry<K,V> pointer : elements){ 
    while(pointer != null){ 
     returnValue++; 
     pointer = pointer.next; 
    } 
    } 
    return returnValue; 
} 

我得到錯誤:

Type mismatch: cannot convert from element type V to SimpleHashtable.TableEntry in foreach line.

下面是完整的類:Code

+2

元素是'V',不是的'TableEntry '數組的數組... – assylias

+0

是TableEntry哈希表的一些子類? – Gacci

+0

你的問題不是關於for循環,而是關於你如何在你的代碼中混合使用V和TableEntry。您需要選擇其中一個或另一個...... – assylias

回答

4

您正試圖獲得TableEntry對象來自Velements)的陣列。這不起作用。

另外,對於數組中的每個條目,您的循環都是雙倍的,您嘗試搜索數組的其餘部分。

嘗試此代替:

public int size() { 
    int returnValue = 0; 
    for (V pointer : elements) 
     if (pointer != null) { 
      returnValue++; 
     } 
    return returnValue; 
} 
0

變化指針變量的類型V

for (V pointer : elements) { 
    \\ loop body 
} 
+1

'V'不必實現'Iterable',他正在迭代不超過'V'的數組。請參閱[JLS 14.14.2](https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.2)。 – Tomas

+0

哦,是的!錯過了'[]',謝謝:) –