Pessoal, bom dia.
Estou iniciando meu curso de Sistema de Informação agora. Fiz o código abaixo para colocar números em ordem crescente utilizando a instrução If. Tentei fazer com o Operador Ternário mas acho que estou errando em alguma coisa. Poderiam me ajudar
If:
import java.util.Scanner;
public class Exercicio2 {
/*
* @Carlos
* Exercício 2 - Intrução If - ordem crescente
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner teclado = new Scanner(System.in);
byte num1, num2, num3, asc;
System.out.println("Digite o primeiro número: ");
num1 = teclado.nextByte();
System.out.println("Digite o segundo número: ");
num2 = teclado.nextByte();
System.out.println("Digite o terceiro número: ");
num3 = teclado.nextByte();
if (num1 > num2) {
asc = num1;
num1 = num2;
num2 = asc;
}
if (num2 > num3) {
asc = num2;
num2 = num3;
num3 = asc;
}
if (num1 > num2) {
asc = num1;
num1 = num2;
num2 = asc;
}
System.out.println("A ordem ascente é: " + num1 + " " + num2 + " " + num3);
}
}
Operador Ternario:
import java.util.Scanner;
public class Exercicio2 {
/*
* @Carlos
* Exercício 2 - Intrução If - ordem crescente
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner teclado = new Scanner(System.in);
byte num1, num2, num3, asc;
System.out.println("Digite o primeiro número: ");
num1 = teclado.nextByte();
System.out.println("Digite o segundo número: ");
num2 = teclado.nextByte();
System.out.println("Digite o terceiro número: ");
num3 = teclado.nextByte();
if (num1 > num2) {
asc = num1;
num1 = num2;
num2 = asc;
}
if (num2 > num3) {
asc = num2;
num2 = num3;
num3 = asc;
}
if (num1 > num2) {
asc = num1;
num1 = num2;
num2 = asc;
}
System.out.println("A ordem ascente é: " + num1 + " " + num2 + " " + num3);
}
}
No código que você postou, não está usando operador ternário.
Comparando 2 numeros com if:
int maior (int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}
Comparando 2 números com operador ternário:
int maior (int a, int b) {
return a > b ? a : b;
}
Usando a instrução “if” dados três números quaisquer consigo colocá-los em ordem crescente. Queria fazer o mesmo processo com o operador ternário apesar de que eu nunca vi um código booleano com operador ternário.
import java.io.PrintStream;
import java.util.Scanner;
public class Exercicio2 {
private static final Scanner entrada = new Scanner(System.in);
private static final PrintStream saida = System.out;
public static void main(String[] args) {
saida.println("Digite o primeiro número: ");
int num1 = Integer.parseInt(entrada.nextLine());
saida.println("Digite o segundo número: ");
int num2 = Integer.parseInt(entrada.nextLine());
saida.println("Digite o terceiro número: ");
int num3 = Integer.parseInt(entrada.nextLine());
int menor = menor(menor(num1, num2), num3);
int medio = maior(menor(num1, num2), menor(maior(num1, num2), num3));
int maior = maior(maior(num1, num2), num3);
saida.println("A ordem ascendente é: " + menor + " " + medio + " " + maior);
}
private static int menor(int a, int b) {
return a < b ? a : b;
}
private static int maior(int a, int b) {
return a > b ? a : b;
}
}
Então você nunca viu uma operação com operador ternário, pois ela depende justamente de uma expressão booleana.
O operador ternário tem esse nome pois ele possui três operandos (três é um terno) :
<a> ? <b> : <c>
Onde:
<a> - Uma expressão booleana
<b> - Valor atribuído caso a expressão booleana seja `true`
<c> - Valor atribuído caso a expressão booleana seja `false`
Resumindo o "?"
é o "então"
e o ":"
é o "senão"
.
Obrigado Staroscki.
Agora sim consigo entender como funciona o operador ternário.
Uma pergunta em qual ou quais situações eu posso usar ele pois na maioria dos códigos envolvendo condicionais a maioria utiliza o if/else e switch?
Em atribuições, ao invés de fazer assim:
Tipo variavel;
if (condicao) {
variavel = umValor;
} else {
variavel = outroValor;
}
Faça assim:
Tipo variavel = condicao ? umValor : outroValor;
Em passagem de parâmetros, ao invés de fazer assim:
if (condicao) {
umMetodo(umParametro);
} else {
umMetodo(outroParametro);
}
Faça assim:
umMetodo(condicao ? umParametro : outroParametro);
Em retorno de métodos, ao invés de fazer assim:
Tipo meuMetodo() {
if (condicao) {
return umaCoisa;
} else {
return outraCoisa;
}
}
Faça assim:
Tipo meuMetodo() {
return condicao ? umaCoisa : outraCoisa;
}