Estou fazendo um curso de Java e o professor e estou tentando fazer um exercicio, mas
ele ta um pouco dificil, não sei como resolver, pois já pesquisei, não sei onde
pesquisar mais, se alguem puder me ajudar (não resolver, mas só ajudar por favor):
2) Verifique o valor de uma variável x, imprimindo uma mensagem quando for maior, menor
e igual a 10, sem usar o if().
Obs: Tentei o usar o Switch case, mas ele faz comparação numérica e não booleana.
e colocando outro switch lá dentro pra saber se é igual ou maior =D
que aula de lógica, Jesuíno!
FlavioHenrique
Vlw.
A
andredecotia
Eu usaria o switch case para responder o exercício no entanto acho o modo com ternário mais elegante.
ViniGodoy
E como vc analisaria bit-a-bit sem o if?
Não sei se vc sabe, mas o java tem todos os operadores bitwise que o C tem.
Alfredo_Barbosa
E como vc analisaria bit-a-bit sem o if?
Não sei se vc sabe, mas o java tem todos os operadores bitwise que o C tem.
realmente eu não sabia disso no java =O
eu analisaria os bits usando o operador ternário ou o switch() mesmo =)
(lembrando que a questão não é sobre legibilidade ou desempenho, mas sim sobre alternativas, é uma pegadinha)
considerando um int (32 bits) é só colocar cada outro bit na fórmula
se um deles for 1 já era, o número é maior
ViniGodoy
Ah tá, pensei que usando operadores bitwise vc teria uma forma sem o ternário, que já havia sido citado. Fiquei imaginando qual… heheheh
Alfredo_Barbosa
ah, if() é essencial, né…
não sei se tô falando asneira, mas acho que tudo é baseado em if(), break e goto():
while() e consequentemente do while() e for(), o operador ternário, switch()
e depois disso toda a orientação a objetos
acho que o professor do menino vai aceitar o operador ternário mesmo…
Jesuino_Master
tem outra forma também, de gambiarra de novo
publicclassMenorQue10{publicstaticvoidmain(Stringargs[]){intnum=Integer.parseInt(args[0]);num-=10;switch(num){case(0):System.out.println("Eh igual a 10");break;default:switch(String.valueOf(num).charAt(0)){case('-'):System.out.println("Eh Menor que 10");break;default:System.out.println("Eh maior que 10");break;}break;}}}
Alfredo_Barbosa
fazendo num-=10 dá pra usar a função Integer.signum(int x) e fazer um switch() como aquele que eu fiz usando o operador ternário XD
Acho que é a solução menos gambiarra sem o ternário e sem o IF:
publicclassMenorQue10{publicstaticvoidmain(Stringargs[]){intnum=Integer.parseInt(args[0]);num-=10;switch(Integer.signum(num)){case(0):System.out.println("Eh igual a 10");break;case(1):System.out.println("Eh maior que 10");break;case(-1):System.out.println("Eh menor que 10");break;default:System.out.println("IT SHOULD NEVER HAPPEN!");break;}}}
Vlw pelo post, me garantiu um divertimento entre um incidente ou outro aqui na empresa