Agrupar condições com IF ???

Java

03/10/2007

Opa,

Iniciante em java. :shock:
Seguinte, em SQL tenho o seguinte IF:

IF (teste IN (2,3,5) THEN
....
END IF;

Em java tem como eu agrupar as condições 2, 3 e 5 em um único IF, como acima ou terei que fazer vários IFs ?

Desde já, agradeço.

[]´s
Vitorino.f

Vitorino.f

Curtidas 0

Respostas

Onion

Onion

03/10/2007

kra creio que nao, acho que vc vai ter ki rodar varios ifs =/
GOSTEI 0
Renan.cb

Renan.cb

03/10/2007

se o teste for com numeros (int) pode fazer um case, mais bonito. hehehe
de preferencia em fazer o case em ordem crescente.

switch (var)
{
case 0: system.out.println(´ola 0´);
case 1: system.out.println(´ola 1´);
case 5: system.out.println(´ola 5´);
}

nao lembro de cabeça, mas acho que tem q ter um break em cada case.
GOSTEI 0
Rogerio.noronha

Rogerio.noronha

03/10/2007

Supondo que que queira testar o valor de um byte, int ou char, faça o seguinte:

switch (var)
{
// se for o valor 0, 1 ou 5 imprime ola seguido do valor.
case 0: 
case 1: 
case 5: system.out.println("ola" +  var);
break;
// se for o valor 2, 3 ou 6 imprime ola seguido do valor.
case 2: 
case 3: 
case 6: system.out.println("ola" +  var);
break;
}

GOSTEI 0
Webercuiaba

Webercuiaba

03/10/2007

Olá vitorino.

Pelo que entendi o mais adequado para você é usar uma estrutura if com o operador condicional ´OU´. Tipo assim:

[b:218a84141e]if (teste==2 || teste==3 ou teste==5) {
[i:218a84141e]Comando1[/i:218a84141e]
}[/b:218a84141e]


A estrutura switch case, não me parece a melhor opção por no seu caso existe apenas um caminho de execução apesar de vários valores verdadeiros para o teste condicional. O switch case seria melhor se você tivesse vários caminhos de execução para o mesmo teste.

Quanto ao break do switch ele não é obrigatório para todas as condições, quando você tem um valor verdadeiro e ele tem um break não são testadas as próximas condições, caso não haja o break executa o código e continua testando as demais condições.

Então caso deseje fazer um swtch com o mesmo resultado não pode usar break e deve repetir os mesmo comando:

[b:218a84141e]switch (teste)
{
// se for o valor 2, 3 ou 5
case 2:
case 3:
case 5: [i:218a84141e]Comando1[/i:218a84141e];
//Caso queira simular um else
break;
default:
//Aqui entra o comando para o else.
} [/b:218a84141e]

Espero ter ajudar. Boa sorte.
GOSTEI 0
Discorpio

Discorpio

03/10/2007

Boa noite a todos.

Existe uma outra maneira de voce tratar isso.

Na verdade, essa maneira é um truque, que voce usará convertendo os valores para String, e utilizando o método IndexOf para localizar uma substring.

Complicado :?:

Não se voce aplicar assim:


  Integer teste = 4;
  if (teste.toString().indexOf("2,3,4") >= 0){
              
  };



Porém devo alertá-lo que voce só conseguirá fazer isso, se o número inteiro for declarado como do tipo da classe Integer que tem uma outra maneira especial de tratar números inteiros.

Se o seu número inteiro estiver declarado com o tipo primitivo Int, então esqueça tudo o que eu disse acima, e siga o exemplo do nosso amigo Webercuiaba.
GOSTEI 0
POSTAR