Um "if" uma linha

14 respostas
R

Gostaria de saber como faço para fazer if em uma linha, tentei fazer como mostra no código abaixo mas não consegui, será que alguém pode me ajudar?

String FONE = this.res.getString("fone")?null:"";

14 Respostas

Andre_Fonseca

[quote=ricardoluizv]Gostaria de saber como faço para fazer if em uma linha, tentei fazer como mostra no código abaixo mas não consegui, será que alguém pode me ajudar?

String FONE = this.res.getString("fone")?null:"";

você está querendo dizer operador ternário certo??

String fone = this.res.getString("fone") !== null ? this.res.getString("fone") : "";
ViniGodoy

Tente converter isso para um if. O que vem antes da ? é a condição. Depois vem a primeira resposta, depois a segunda. No seu caso:

//Isso aqui
String FONE = this.res.getString("fone")?null:"";  

//Pode ser escrito assim
if (this.res.getString("fone")) {
   FONE = null;
} else {
   FONE = "";
}

Note que o a condição não faz sentido.

R

Sim, acho que sim, estou tentando fazer um operador ternário, mas não estou conseguindo fazer. Eu não posso deixar que a variável FONE receba null, para que eu não precisa fazer um IF e deixar o código mais bagunçado gostaria de filtar esse valor sem um uso do “IF” e sim deste operador.

Tentei executar o código abaixo mas não deu certo, apareceu “Ilegal start of expression”, o que eu posso fazer para funcionar?

String FAX = this.res.getString("fone")!== null?this.res.getString("fone"):"";
ViniGodoy

Como você faria com um if comum?

E o != é com um = só.

R

Faria assim:

String FONE="";
    if ( (this.res.getString("fone") == null) {
             FONE = "";
     }else{
            FONE = this.res.getString("fone");
     }
lina

Oi,

Apenas por questão de performace/desempenho.

Neste if:

String FAX = this.res.getString("fone")!= null?this.res.getString("fone"):"";

Você faz uso da chamada getString(“fone”) 2 vezes. O correto seria:

String
ls_fone = this.res.getString("fone");
String FAX = ls_fone != null ? ls_fone : "";

Obs: Correção ao comparar diferença.

Tchauzin!

lina

ricardoluizv:
Faria assim:

String FONE="";
    if ( (this.res.getString("fone") == null) {
             FONE = "";
     }else{
            FONE = this.res.getString("fone");
     }

Oi,

Em relação a este código, a primeira condição == null é desnecessária. Note que sua variavel FONE já é iniciada com String vazia.

Sendo assim, o certo seria:

String FONE=""; if ( (this.res.getString("fone") != null) { FONE = this.res.getString("fone"); }

Sem a condição else.

Obs: Desculpa me meter Vini…

Tchauzin!

janjan

o correto é
o sinal de diferente no java é !=
e não
!==
dai o nosso amigo ai em cima se confunde!
ou outros que virão

R

A sim, fizemos isso só para um teste, mesmo assim, muito obrigado pelo conselho. Eu tentei fazer mas não obtive muito resultado, ele sempre mostra vazio, é como se fosse assim: String FONE = “”;

Será que alguém poderia me ajudar, segue o código que fiz abaixo:

String FONE = this.res.getString("fone") == null ? this.res.getString("fone"): " ";
lina

Oi,

Tá… mais você errou na sua condição… o correto é:

String FONE = this.res.getString("fone") == null ? "" : this.res.getString("fone");

Tchauzin!

R

AHH! então quer dizer que o “?” é igual ao “if” e o “:” é igual ao “else” ?

lina

Oi,

Exatamente!

Se for igual a null então ( ? ) “” senão ( : ) ;

Tchauzin!

ViniGodoy

ricardoluizv:
Faria assim:

String FONE="";
    if ( (this.res.getString("fone") == null) {
             FONE = "";
     }else{
            FONE = this.res.getString("fone");
     }

Então.

  1. Tire condição do seu if e ponha antes do ? --> this.res.getString(“fone”) == null
  2. Tire o está sendo atribuído no interior do if e ponha depois do ? --> “”
  3. Tire o que está sendo atribuído no else e ponha depois dos : --> this.res.getString(“fone”)

Logo, seu if vira:

String FONE=this.res.getString("fone") == null ? "" : this.res.getString("fone");
E

O operador ternário “?” é uma coisa dos infernos. Seria muito mais fácil se fosse assim:

String s = if (a.equals (b)) { c } else  { d };

ou, pensando VB-listicamente,

String s = iif (a.equals (b), c, d);

Há outras linguagens (como Scala) que conseguem fazer isso numa boa.

Criado 30 de outubro de 2009
Ultima resposta 30 de out. de 2009
Respostas 14
Participantes 6