2015-02-12 42 views
0

我不能使用任何進口,如Java.arrays /的ArrayList等尋找和改變它

我迄今爲止代碼:

+0

你的remove方法什麼也不做,它只是返回對應於參數index的元素!由於您使用的是簡單數組,並且不允許使用列表,因此您必須創建一個新數組(跳過要刪除的元素),然後用新數組替換原始數組。 – Mooolo 2015-02-12 05:18:48

+0

@Mooolo好的,我明白我怎樣才能將一個數組複製到一個新的數組中,但我該如何使它跳過我不想要的元素? – 2015-02-12 05:21:22

+0

你的添加方法在哪裏? – Kode 2015-02-12 05:21:26

回答

0

問題就在於,你永遠不將本地變量arrays設置爲newArr。此外,您還沒有完成創建newArr,因爲return語句會在for循環完成之前退出該方法。對於remove方法結束的正確的代碼是:

Object elementRemoved = null; 
for(int i=0;i<arrays.length;i++){ 
    if(!deleteItem[i]){ 
     newArr[index++] = arrays[i]; 
    } 
    else { 
     elementRemoved = arrays[i]; 
    } 
} 
arrays = newArr; 
return elementRemoved; 

注意,該代碼將刪除傳入方法的對象的所有實例。

另一個更正:您正在傳遞索引,但正在比較值。所以,你是這樣,而不是比較值的指數也有所改變上層爲循環:

for(int i=0;i<arrays.length;i++){ 
    if(i == element){ 
     deleteItem[i]=true; 
    } 
    else{ 
     deleteItem[i]=false; 
     size++; 
    } 
} 

然而,你在你的測試方法,指標似乎並不正確。如果它們是零索引,則不會得到您聲稱的結果。事實上,刪除2個元素(僅留下6個,最大索引爲5)後,第6個索引不會存在。

+0

我改變了我的代碼。代碼幾乎可以工作 – 2015-02-12 05:45:23

+0

查看我的更新後的帖子。您要求刪除的索引在第三次刪除呼叫時不會存在。請記住,如果數組爲0索引,則第6項的索引爲5. – colavitam 2015-02-12 05:46:21

+0

現在我明白了,會試試這個。 – 2015-02-12 05:47:54