Boa tarde. Acredito que o operador condicional ternário possa ter algum limitador, ou seja, algo que não seja possível e que o Switch-case seja. Eu fiz o código abaixo e achei o código mais limpo utilizando o operador ternário. Qual a opinião de vocês?
import javax.swing.JOptionPane;
public class Meses{
public static void main(String[] args) {
/* String st = “Informe um número entre 1 e 12”;
st = JOptionPane.showInputDialog(null,st);
byte mes = Byte.parseByte(st);
switch(mes) {
case 1:
st = "Janeiro";
break;
case 2:
st = "Fevereiro";
break;
case 3:
st = "Março";
break;
case 4:
st = "Abril";
break;
case 5:
st = "Maio";
break;
case 6:
st = "Junho";
break;
case 7:
st = "Julho";
break;
case 8:
st = "Agosto";
break;
case 9:
st = "Setembro";
break;
case 10:
st = "Outubro";
break;
case 11:
st = "Novembro";
break;
case 12:
st = "Dezembro";
break;
default:
st = "Mês inválido!";
JOptionPane.showMessageDialog(null, st, "Erro", 0);
System.exit(0);
}
st = "Você escolheu o mês de " + st;
JOptionPane.showMessageDialog(null, st, "Mensagem", 1);
System.exit(0);
*/
String st = "Informe um número entre 1 e 12";
st = JOptionPane.showInputDialog(null,st);
byte mes = Byte.parseByte(st);
JOptionPane.showMessageDialog(null,
mes == 1 ? "Janeiro" :
mes == 2 ? "Fevereiro" :
mes == 3 ? "Março" :
mes == 4 ? "Abril" :
mes == 5 ? "Maio" :
mes == 6 ? "Junho" :
mes == 7 ? "Julho" :
mes == 8 ? "Agosto" :
mes == 9 ? "Setembro" :
mes == 10 ? "Outubro" :
mes == 11 ? "Novembro" :
mes == 12 ? "Dezembro" :
"Mês inválido", "Mensagem",1);
}
Você já usou o excel ou o calc do libreoffice?
Se sim, já usou a função se em algum deles?
O operador ternário é muito parecido com eles.
E, veja, seu uso é indicado quado você tem uma validação e duas possibilidades:
@C4sh3w exatamente isso que o @darlan_machado disse , para essa quantidade acredito que o ternário utilizaria até menos processamento, porem para mais opções o Switch case é a melhor escolha. a menos que você faça um estudo de probabilidade para dizer as tendencias e organizar o operador ternário em relação ao seu estudo.
Nesse exemplo, eu tive 12 possibilidades. 13 na verdade. Poderia também ter inúmeras… e achei mais legível o código. No exemplo do Switch-case, eu sou obrigado a declarar as instruções:
switch (só no início)
case (em todas as possibilidades)
break (em todas as possibilidades)
default (só no final)
Além de informar a variável quantas vezes for necessária verificar a instrução.
No operador ternário:
? em toda instrução
: em toda instrução
E a variável quantas vezes for necessária verificar a instrução
Logo, não se compara com a quantidade de código.
Fiquei curioso se debugando, o Java iria ler linha por linha, o que não aconteceu. Se eu (utilizando o operador ternário), digito 3, ele verifica até esse ponto e ignora os demais. Eu até pensei que o compilador iria continuar até o final, o que não ocorreu. Logo, vejo, até o momento que utilizar o operador ternário tem mais vantagens. Ainda estudando para entender melhor os conceitos.
Obrigado.
Por isso a execução se dá linha a linha.
O switch/case tem um mecanismo mais otimizado, em que, se valida o elemento que atende ao requisito (a comparação do switch) e todos os elementos abaixo dele, desde que, não se encontre uma instrução de retorno.