If tornando-se gigante, como diminuir?

6 respostas
S

Bem, não sou um novato, mas também não sou um expert em programação, tem algumas coisas que me passam desapercebidas, mas esse problema eu não sei como resolver.
Tenho uma variável que armazena uma string, tem que ser uma string obrigatoriamente, mas eu tenho que verificalá pois outra variável muda dependendo do valor dessa string.
Exemplo:

if( classe.equals("blbals") || classe.equals("asdf") || classe.equals("ququq")){ bla = 0.9; bla2 = 6.5; } if( classe.equals("blblb") || classe.equals("kask") ){ bla2 = 0.9; } if( classe.equals("asdqwe") || classe.equals("Pzxc")){ bla = 0.75; }
Gostaria de saber como posso fazer a verificação para mudar a variável sem que seja necessário utilizar tantos ifs (são mais de 10).
Obrigado

6 Respostas

Alexandre_Saudate

Use um mapa para fazer as associações. Ficaria assim:

Map<String, Double> valores = new HashMap<String, Double>();
valores.put("blbals", 0.9);


bla = valores.get("blbals");

[]´s

ViniGodoy

Substitua o if por polimorfismo, exemplo:
http://www.guj.com.br/posts/list/55885.java#293436

Alexandre_Saudate

ViniGodoy:
Substitua o if por polimorfismo, exemplo:
http://www.guj.com.br/posts/list/55885.java#293436

Muito melhor :wink:

[]´s

lina

Oi,

No caso do IF, utilize sempre a constante na frente. Assim evitará NullPointerException:

if("blbals".equals(classe)

A utilização do IF com ? e : seria uma opção também.

Tchauzin!

lina

Oi,

Normal:

if( classe.equals("blbals") || classe.equals("asdf") || classe.equals("ququq")){ bla = 0.9; bla2 = 6.5; } if( classe.equals("blblb") || classe.equals("kask") ){ bla2 = 0.9; } if( classe.equals("asdqwe") || classe.equals("Pzxc")){ bla = 0.75; }

Nova opção:

bla = ("blbals".equals(classe) || "asdf".equals(classe) || "ququq".equals(classe.)) ? 0.9 : ( "asdqwe".equals(classe) || "Pzxc".equals(classe)) ? 0.75 : null; bla2 = ("blbals".equals(classe) || "asdf".equals(classe) || "ququq".equals(classe.)) ? 6.5 : ("blblb".equals(classe) || "kask".equals(classe)) ? 0.9 : null;

Tchauzin!

S

Desculpe ViniGodoy, não consegui ver onde seu link me ajudaria a diminuir o número de ifs, eu entendi o que ele faz, só não entendi como ele seria aplicado ao meu caso.

Criado 29 de setembro de 2010
Ultima resposta 29 de set. de 2010
Respostas 6
Participantes 4