Wenn im hashmap.put-Aufruf konstruiert
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?
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.