Operador Ternário

4 respostas
bdoweb

Pessoal,

Como é que ficaria o código abaixo em uma estrutura de IF/ELSE convencional …

E para os já certificados caiu na prova já operadores ternários?

public static void main(String[] args) { boolean b = false; String s = (b!=b) ? (b=!b) ? "Hello" : "hello" : (b=!b) ? "World" : "world"; System.out.println(s); }

Obrigado

4 Respostas

Rafael_Nunes

boolean b = false; String s; if(b != b){ if(b = !b){ s = "Hello"; }else{ s = "hello"; } }else { if(b = !b){ s = "World"; }else{ s = "world"; } }

E em relação a segunda pergunta, sim, mas não vi nada tão bizarro quanto isso.

Obs 1: Só por curiosidade, de onde você tirou este exemplo?

Obs 2: O valor de ‘s’ seria ‘Hello’ neste caso.

Obs 3: Não tem uma Obs 3.

bdoweb

Na verdade tirei isso do concurso publico da prodesp …

Então executei a linha e ele retonou “World”

Mas ufa se não é tão bizarro assim não …

Omeganosferatu

A saida é World certo ?
operador ternario cai na certificação sim ( não sou certificado, mas tenho estudado a prova e o conteudo ) …

Ficaria assim

if( b!=b ) {
                       if( b=!b ) {
                         s= "Hello";
                       } else {
                         s= "hello";
                       }
                    } else {
                       if( b=b ) {
                         s= "World";
                       } else {
                         s= "world";
                       }
                    }

Repara que o terceiroIf ao inves de b=!b … fica apenas b=b … por que voce faz uma atribuiçao a b no segundo if … portanto se voce fizer o if b=!b … b vai estar valendo true, e voce vai nega-lo … ai a resposta seria “world” …
abraço

PS. Meu código foi adaptado pra gerar a mesma saida do if reduzido, porem seria logicamente errado. Se você reproduzir a risca aquele if, você nunca conseguirá os resultados iguais, pois no if simplificado você executa uma atribuição que usando os blocos if/else nunca será executada…
Espero ter ajudado

Rafael_Nunes

É ‘World’ mesmo, eu que me enganei.

Criado 10 de março de 2008
Ultima resposta 10 de mar. de 2008
Respostas 4
Participantes 3