2016-11-27 65 views
-1

我是JAVA和Netbeans的新手,這是我必須做的:
用戶可以在輸入框中寫入CD標題,然後按下remove按鈕從列表中刪除CD 。如果CD沒有集合中存在,則可以顯示在發件箱的消息來說明這一點。我必須用Collections.binarySearch()做到這一點。這只是整個計劃的一部分,但我已經弄清楚了其餘部分。這是我做了什麼:Collections.binarySearch難點

ArrayList <String> songs = new ArrayList(); 
Collections.addAll(songs, "Metric - Fantasies", "\nBeatles - Abbey Road", "\nPearl Jam - Ten", "\nDoors - Alive", "\nThe Rolling Stones - Gimme Shelter\n"); 
Collections.sort(songs, String.CASE_INSENSITIVE_ORDER); 
Collections.binarySearch(songs,"",String.CASE_INSENSITIVE_ORDER); 
String delete=songs.remove(songs.size()-1); 
String out=""; 
    String Out = null; 
     for (int i = 0; i < songs.size(); i++) 
    Out=out + songs;{ 
     output.setText("Original Order\n**************\n" + Out+delete); 

我遇到的問題是,如果我加入我自己的歌,然後按刪除它的工作原理,但如果我嘗試刪除ArrayList中任何一首歌曲它不工作。任何幫助非常感謝,並提前感謝您!

+0

請[編輯]你的問題,包括一個[mcve],並解釋什麼*「它不工作」*的意思。 –

+0

你的意思是'Collections.binarySearch()'? – EJP

+0

@EJP這是一個漫長的一天 –

回答

0

你的代碼總是刪除列表中的最後一首歌。這就是爲什麼它與你添加的歌曲「起作用」。它不使用搜索結果。

// binarySearch returns the position of the element in the list 
// Or a negative number if not found. 
int i = Collections.binarySearch(songs, "metric - fantasies", String.CASE_INSENTITIVE_ORDER); 
if (i < 0) { 
    // Not found, display something 
} else { 
    String deleted = songs.remove(i); 
} 

請記住,閱讀API文檔,瞭解一種方法的作用,而不是您認爲它的作用。

+0

它刪除所有的歌曲,即使歌曲在列表中仍然顯示沒有找到 –