2008-11-23 6 views
0

J'ai une variable de type Hashmap <String,Integer>.Si construit dans hashmap.put appel

Dans ce cas, la valeur Integer peut nécessiter une certaine manipulation en fonction de la valeur d'une variable indicateur. Je l'ai fait comme ça ...

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

Mais je reçois une erreur:

Syntax error on token(s), misplaced constructs.

à l'appel Hashmapvariable.put.

Je reçois aussi une autre erreur

Syntax error on token ")", delete this token.

à la finale ");" ligne. Mais je ne peux pas supprimer le ")" - c'est la parenthèse fermante pour l'appel de la méthode put.

Je ne comprends pas cela. Quelle erreur est-ce que je fais?

Répondre

4

Vous ne pouvez pas placer une instruction dans l'appel de méthode.

Cependant, une option pourrait consister à une méthode qui retourne un Integer tel que:

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

Ensuite, vous pouvez faire un appel comme celui-ci:

hashmap.put(someString, getIntegerDependingOnFlag(flag)); 
7
new Integer(flag_variable ? manipulated value : non-manipulated value) 

Est-ce que truc

Editer: Sur Java 5, je suppose que vous pouvez aussi écrire

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

en raison de l'auto-boxing.

+0

Si les expressions alternatives ne sont pas toutes deux de type int alors la sémantique devient "intéressante". –

0

Ceci n'est pas un schéma, donc si les instructions n'évaluent pas une valeur. Vous devrez utiliser un tri-if-thing (le nom m'échappe pour une raison quelconque maintenant) ou créer une fonction, comme quelqu'un d'autre l'a dit.

+0

Nom: c'est un opérateur ternaire, ou plus précisément un opérateur de comparaison (il pourrait y avoir d'autres types d'opérateurs ternaires, même si je ne les ai pas vus dans les langages populaires ...). – PhiLho

Questions connexes