2016-11-27 16 views
-1

私はJAVAとNetbeansを新しくしました。これは私がしなければならないことです:
ユーザは入力ボックスにCDタイトルを書き込んでから、リストから削除ボタンを押して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); 

私が午前問題は、私は自分の曲を追加し、その後、私はそれが仕事をdoesntの配列リスト内の曲のいずれかを削除しようとする場合、それは動作します削除を押しますがあればということです。どんな助力も大変ありがとうございます。事前に感謝します!

+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

すべての曲を削除しますが、曲がリストにあっても表示されません –