"BTW".equals( " BTW ")
ist false
.
Leerzeichen machen einen Unterschied beim Stringvergleich.
Hier ist ein Programm, das den Anwender nach einem Akronym fragt und dann dessen Bedeutung ausgibt.
import java.util.Scanner; public class StringSwitcher { public static void main ( String[] args ) { String userIn; String meldung = "userIn ist: "; Scanner scan = new Scanner( System.in ); System.out.print("Akronym eingeben: "); userIn = scan.nextLine().trim().toUpperCase(); switch ( userIn ) { case "LOL": meldung = meldung + "Laugh Out Loud" ; break; case "BFF": meldung = meldung + "Best Friends Forever" ; break; case "SO": meldung = meldung + "Significant Other" ; break; case "THS": case "THKS": case "TX": meldung = meldung + "Thanks" ; break; default: meldung = meldung + "unknown" ; } System.out.println ( meldung ) ; } }
Anwender könnten Leerzeichen vor oder nach dem Akronym eingeben.
Die Methode String.trim()
entfernt Leerzeichen auf beiden Seiten eines Strings.
Ein anderes Problem ist, dass der Anwender Groß- oder Kleinbuchstaben eingeben kann.
Die Methode String.toUpperCase()
erzeugt einen String, der nur aus Großbuchstaben besteht.
Könnte die switch
-Anweisung nicht einfacher gestaltet werden?