Frage

Ich habe eine Variable vom Typ Hashmap<String,Integer>.

In diesem Fall muss der Integer-Wert abhängig vom Wert einer Flag-Variablen möglicherweise manipuliert werden.Ich habe es so gemacht...

Hashmapvariable.put( somestring,
    if (flag_variable) {
     //manipulation code goes here
     new Integer(manipulated value);
    } else {
     new Integer(non-manipulated value);
    }
);

Aber ich erhalte eine Fehlermeldung:

Syntaxfehler am Token (en), fehlgeleitete Konstrukte.

beim Hashmapvariable.put-Aufruf.

Ich erhalte auch einen weiteren Fehler

Syntaxfehler am Token ")", löschen Sie dieses Token.

im Finale ");"; Linie.Aber ich kann das „)“ nicht löschen – es sind die schließenden Klammern für den Put-Methodenaufruf.

Ich verstehe das nicht.Welchen Fehler mache ich?

War es hilfreich?

Lösung

Sie können keine Aussage in dem Methodenaufruf setzen.

Allerdings könnte eine Option sein, um ein Verfahren zu machen, die einen Integer wie zurückgibt:

private Integer getIntegerDependingOnFlag(boolean flag)
{
    if (flag)
        return new Integer(MANIPULATED_VALUE);
    else
        return new Integer(NON-MANIPULATED_VALUE);
}

Dann können Sie einen Anruf wie folgt vor:

hashmap.put(someString, getIntegerDependingOnFlag(flag));

Andere Tipps

 new Integer(flag_variable ? manipulated value : non-manipulated value)

Ist der Trick

Edit: Auf Java 5, nehme ich Sie auch schreiben können,

hashmap.put(someString, flag_variable ? manipulated value : non-manipulated value)

aufgrund Auto-Boxen.

Dies ist kein Schema, wenn also Anweisungen keinen Wert ergeben.Sie müssen ein Tri-If-Ding verwenden (der Name fällt mir gerade aus irgendeinem Grund ein) oder eine Funktion erstellen, wie jemand anderes sagte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top