2016-11-06 5 views
1

Ich versuche, Code in Java für eine MP3-Klasse zu schreiben. Ich möchte in der Lage sein, eine vollständige oder teilweise Suche nach dem Titel und dem Künstler durchzuführen, und es wird auf den Liedern angezeigt, die den Teilstrang enthalten.Teilsuche Sammlungen Java

Dies ist der Code, den ich bisher geschrieben habe .. es nur in einem Testgerät funktioniert, wenn der Benutzername den vollständigen Titel oder Voll Künstler betritt:

Klasse Code

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()); 
      } 
     } 
    } 

Tester Code

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

"" es funktioniert nur in einem Tester, wenn der Benutzer den vollständigen Titel oder vollständigen Künstlernamen eingibt: "" - geben Sie weitere Details, wie was erwarten Sie, was tatsächlich passiert, welche Fehler bekommen Sie (wenn überhaupt ..), etc. –

Antwort

1

um in einem Fall unempfindlich Art und Weise, eine einfache Art und Weise teilweise und passen equalsIgnoreCase mitersetzenund dann contains, zum Beispiel:

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

Beachten Sie, dass toLowerCase() locale spezifisch ist. Wenn sich die Titel nicht im Standardgebietsschema befinden, stellen Sie sicher, dass Sie den entsprechenden Locale als Parameter angeben.

+0

Vielen Dank für die Rückmeldung an mich. Es hat funktioniert Ich bin sehr froh, dass ich am Ende eine else-Anweisung hinzugefügt habe, um System.out.println auszudrucken ("Kein Künstler mit diesem Namen"); ........... aber es wird oft ausgegeben, abhängig von der Anzahl der Songs in der Playlist. – americanheartbreak

+0

Für Ihr nächstes Problem, fügen Sie ein Flag innerhalb der Schleife, setzen Sie es auf wahr, wenn Sie eine Übereinstimmung finden, und drucken Sie "kein Künstler" nach der Schleife, nur wenn das Flag nicht festgelegt wurde. Viel Glück! – janos

Verwandte Themen