Domanda

Ho una variabile di tipo Hashmap <String,Integer > ;.

In questo, il valore Integer potrebbe dover subire delle modifiche a seconda del valore di una variabile flag. L'ho fatto così ...

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

Ma ricevo un errore:

  

Errore di sintassi su token (s), fuori posto   costrutti.

alla chiamata Hashmapvariable.put.

Ricevo anche un altro errore

  

Errore di sintassi sul token ") " ;, eliminalo   token.

alla fine "); " linea. Ma non riesco a cancellare il & Quot;) & Quot; - Sono le parentesi di chiusura per la chiamata del metodo put.

Non capisco. Che errore sto facendo?

È stato utile?

Soluzione

Non è possibile inserire un'istruzione nella chiamata al metodo.

Tuttavia, un'opzione potrebbe essere quella di creare un metodo che restituisca un Integer come:

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

Quindi, puoi effettuare una chiamata in questo modo:

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

Altri suggerimenti

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

Fa il trucco

Modifica: Su Java 5, suppongo che tu possa anche scrivere

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

a causa del boxing automatico.

Questo non è uno schema, quindi se le istruzioni non valutano un valore. Dovrai usare un tri-if-cosa (il nome mi sfugge per qualche motivo in questo momento) o creare una funzione, come ha detto qualcun altro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top