2016-11-06 9 views
1

私はJavaでmp3クラスのコードを書こうとしています。私はタイトルとアーティストの完全または部分的な検索を完了することができるようにしたい、それは部分文字列を含む曲に表示されます。部分検索コレクションjava

クラスコード

public void searchByArtist(String artist){ 
     for(Song s : songs){ 
      if(s.getArtist().equalsIgnoreCase(artist)){ 
       System.out.println(s.toString()); 
      } 
     } 

    //search for a song by title 

    public void searchByTitle(String title){ 
     for(Song s : songs){ 
      if(s.getTitle().equalsIgnoreCase(title)){ 
       System.out.println(s.toString()); 
      } 
     } 
    } 

テスターコード

これは、ユーザーがフルタイトルまたは完全なアーティスト名を入力した場合、私がこれまでに書いたコードが...それが唯一のテスターで動作しますです

case 4: 
    keyIn.nextLine(); //clear the buffer of the previous option 
     System.out.println(); 
      System.out.print("Please enter Title: "); 
        title = keyIn.nextLine(); 
         player.searchByTitle(title); 
           break; 

case 5: 
keyIn.nextLine(); //clear the buffer of the previous option 
System.out.println(); 
System.out.print("Please enter Artist: "); 
artist = keyIn.nextLine(); 
player.searchByArtist(artist); 
break; 
+0

""ユーザが完全なタイトルまたは完全なアーティスト名を入力した場合、テスターでのみ動作します: " - 何が起こるか、実際に何が起こるか、どのようなエラーが発生しているかなどもしあれば..) –

答えて

1

は大文字小文字を区別しない方法で、部分的に一致させるには、簡単な方法は、0123でequalsIgnoreCaseを交換することです、次いでcontains、例えば:

String search = artist.toLowerCase(); 
for (Song s : songs) { 
    if (s.getArtist().toLowerCase().contains(search)) { 
     System.out.println(s.toString()); 
    } 
} 

toLowerCase()ロケール特異的であること。タイトルがデフォルトのロケールにない場合は、適切なLocaleをパラメータとして指定してください。

+0

私に戻ってくれてありがとう、ありがとう。これはうまくいきました。私は、System.out.println( "その名前のアーティストはいません")を印刷するために、下部にelseステートメントを追加しました。 ...........プレイリストの曲数に応じて何度もプリントアウトします。 – americanheartbreak

+0

次の問題については、ループ内にフラグを追加し、一致するものを見つけたらそれをtrueに設定し、フラグが設定されていない場合にのみループの後に「アーティストなし」を表示してください。がんばろう! – janos

関連する問題