2016-04-15 9 views
-4

I if-Anweisung gemacht, aber es ist so lange ..Wie machen es kürzer - Java String.equal (string) Methode

wie folgt aus:

if("WORDS".equals(object.string1) || "WORDS".equals(object.string2) || "WORDS".equals(object.string3) 
|| "WORDS".equals(object.string4) || "WORDS".equals(object.string5) || "WORDS".equals(object.string6) 
|| "WORDS".equals(object.string7) || "WORDS".equals(object.string8) || "WORDS".equals(object.string9) 
|| "WORDS".equals(object.string10)) { ......... } 

, wie man es machen kürzere Aussage

+11

Setzen Sie 'string1..string10' in ein' Set 'und verwenden Sie' set.contains ("WORDS") '. –

+0

Mit Ihrer Bearbeitung haben Sie es jetzt entweder nicht kompilieren lassen (da 'java.lang.Object' diese Felder nicht hat) oder verwirrend (da' Objekt' nicht mehr auf 'java.lang.Object' verweist). –

+0

Der Code, den Sie gepostet haben, ergibt keinen Sinn. Haben Sie einen aktuellen (compilierbaren) Code, nach dem Sie fragen können? – khelwood

Antwort

1

Sie könnten eine Funktion mit variabler Anzahl von Argumenten erstellen:

static bool compareMultiStrings(String words, String ... stringi) { 
    if (words == null) return false; 

    for(String s : stringi){ 
    if (words.equals(s)) return true; 
    } 

    return false; 
} 

und nennen es dann von Ihrem wenn:

if (
    compareMultiStrings(
    "WORDS", 
    object.string1, object.string2, object.string3, object.string4, 
    object.string5, object.string6, object.string7, object.string8, 
    object.string9) 
) 
{ ..... } 

Das erste Argument, wenn für Ihre Konstanten Zeichenfolge, "WORDS". Die anderen Parameter sind der Parameter varargs.

2

Versuchen Sie, diese

static boolean equalsOr(String a, String... b) { 
    for (String s : b) 
     if (a.equals(s)) 
      return true; 
    return false; 
} 

und

if (equalsOr("WORDS", object.string1, object.string2, ...)) 
Verwandte Themen