Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...)

mancko

Mitglied
Hiho 🙂

ich weiß mein Problem lässt sich auch einfach durch andere Befehle lösen (z.b. durch eine Auswahlcheckbox), aber ich würde doch aus Neugier gerne wissen wie ich folgendes Löse könnte:

In ein Textfeld gibt der Benutzer sein Geschlecht ein.
-> Der Nutzer gibt also z.B. M,m, Mann oder frau, Frau oder F ein...
Ich möchte aber sehr "nutzerfreundlich" sein, dh. egal ob M, m, mann oder Mann (etc) eingegeben wird, soll das Programm das erkennen, dass das Geschlecht männlich ist.

bisher löse ich des durch If und else if für jeden Fall einzeln:
Java:
if (geschlecht.equals("M")) {    // M M M M M M M
                        ....(Anweisung)
     
       } else if (geschlecht.equals("m")) {  // m m m m m m m m m
                      ....(Anweisung)
        
       } else if (geschlecht.equals("mann")) {  // mann mann mann
                      ....(Anweisung)
        
       } else if (geschlecht.equals("Mann")) {  // Mann Mann Mann
                      ....(Anweisung)
        .....
aber des ist ja mal super dämlich :/



Wie kann man mehrere Eingaben in einer Textzeilen vergleichen?
Sachen wie if (geschlecht.matches("M", "m", "Mann")) klappen nicht.
Ich habe schon 100 Kombis aus if equals und if matches in kombi mit dingen wie ODER, oder, or ,&, &&, |, || versucht.... aber nie mit Erfolg.

weder SuFu, Google oder meine 3 Javabücher konnten mir weiterhelfen^^
Des muss doch irwie gehen oder?^^

LG
 
Hi
Du kannst es vielleicht so machen:
Java:
String g = geschlecht.toUpperCase();
Damit hast du bereits von allen möglichen Eingaben einen String mit Grossbuchstaben.
Damit lässt sich der Vergleich der Eingabe auf 8 Möglichkeiten reduzieren z.B.
Java:
private static String[] typen = new String[] {"Mann", "m", "mann", "M", "Frau", "f", "fr", "F", "ma", "fra", "fr"};
public static void main(String[] args) {
    String key;
    for (String string : typen) {
        key = string.toUpperCase();
        switch (key) {
        case "M":
            System.out.println("Mann");
            break;
        case "MA":
            System.out.println("Mann");
            break;
        case "MAN":
            System.out.println("Mann");
            break;
        case "MANN":
            System.out.println("Mann");
            break;
        case "F":
            System.out.println("Frau");
            break;
        case "FR":
            System.out.println("Frau");
            break;
        case "FRA":
            System.out.println("Frau");
            break;
        case "FRAU":
            System.out.println("Frau");
            break;
        default:
            break;
        }
    }
}
 
Java:
if (geschlecht.equals("M") || geschlecht.equals("Mann")) {
      ...
}

oder bei vielen Möglichkeiten
Java:
List<String> listPossibilities = Arrays.asList("M", "m", "Mann", "mann", "...");
if (listPossibilities.contains(geschlecht) {
      ...
}
Natürlich sollte wie schon von @knilch erwähnt auch toUpperCase oder toLowerCase genutzt werden...[/code]
 
Zuletzt bearbeitet:
Man könnte auch einfach eine Abfragen machen wie

Java:
String g = gender.toUpperCase();
if (g.startsWith("F")) {
    // egal ob Frau, Fr oder f oder auch FRAUU etc
    System.out.println("Frau");
} else if (g.startsWith("M")) {
    // egal ob Mann, Ma oder m etc
    System.out.println("Mann");
} else {
    System.out.println("unbekannt");
}
 

Neue Themen


Zurück
Oben