Ajuda em questao logica

4 respostas
T

Olá pessoal, tudo bem?
Eu nao entendi uma questao lógica aqui, alguem conseguiria me explicar por que sai “hello” nessa questao:

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); }

Agradecido desde já.

4 Respostas

davidbuzatto

linha 2: b é falso.
linha 3: b recebe a negação de b, sendo assim, b é true. Como b é true, entra na primeira expressão do operador ternário, que é outra expressão com operador ternário, onde b recebe novamente a negação de b, tornando b falso (pois ele era true). Como b é falso no segundo operador ternário, é retornado a segunda parte do mesmo que é “hello” para a String s.

[]'s

T

linha 2: b é falso.
linha 3: b recebe a negação de b, sendo assim, b é true. Como b é true, entra na primeira expressão do operador ternário, que é outra expressão com operador ternário, onde b recebe novamente a negação de b, tornando b falso (pois ele era true). Como b é falso no segundo operador ternário, é retornado a segunda parte do mesmo que é “hello” para a String s.

[]'s

Obrigado, davidbuzatto. Era isso mesmo que eu queria (:

Outra pergunta(se possível).
Queria saber se tem um jeito específico de ler esta parte do codigo:

String s = (b = !b) ? (b = !b) ? "Hello" : "hello" : (b != b) ? "world" : "World";

Outra coisa… porque não mostrou “world” ou “World”?

M

Pelo que parece você ainda não entendeu muito bem operador ternário.

Exemplo:

boolean b = false;  

System.out.println( b ? "b é true" : "b é false" );

//é o mesmo que:
		
if(b){
	System.out.println( "b é true" );
}
else{ 
	System.out.println( "b é false" );
}

outra coisa que pode ajudar é a identação

String s = (b = !b) ? 
				 			(b = !b) ? "Hello" : "hello" : 
				 			(b != b) ? "world" : "World";
T

Valeu, entendi =P

Criado 4 de março de 2012
Ultima resposta 6 de mar. de 2012
Respostas 4
Participantes 3