Pergunta

Eu tenho uma variável do tipo Hashmap<String,Integer>.

Neste, o valor inteiro pode ter que ir alguma manipulação, dependendo do valor de uma variável de sinalizador. Eu fiz isso assim ...

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

Mas eu recebo um erro:

Erro de sintaxe na ficha (s), extraviado construções.

na chamada Hashmapvariable.put.

Eu também obter outro erro

Erro de sintaxe no token ")", elimine este token.

no final ");" linha. Mas eu não posso excluir a ")." - seus os parênteses de fechamento para a chamada de método put

Eu não entendo isso. O erro que eu estou fazendo?

Foi útil?

Solução

Você não pode colocar uma declaração na chamada do método.

No entanto, uma opção poderia ser a de fazer um método que retorna um Integer tais como:

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

Em seguida, você pode fazer uma chamada como esta:

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

Outras dicas

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

Será que o truque

Edit: Em Java 5, suponho que você também pode escrever

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

devido à auto-boxing.

Este não é esquema, por isso, se as declarações não avaliam para um valor. Você terá que usar uma coisa tri se-(o nome me escapa, por algum motivo agora) ou criar uma função, como alguém disse.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top