AFF Education Construa seu Futuro

Aula 46 - Operador Ternário e Enum

Operador Ternário

O que é o operador ternário?

Em Java, o operador ternário é uma forma compacta de escrever expressões condicionais. Ele substitui estruturas simples de if-else e tem a seguinte forma:

condição ? valorSeVerdadeiro : valorSeFalso;

É chamado "ternário" porque utiliza três partes:

  1. Uma condição booleana
  2. Resultado se a condição for verdadeira
  3. Resultado se a condição for falsa

Exemplos Básicos do Operador Ternário

Exemplo 1: Controle de acesso

public class ExemploTernario1 {
    public static void main(String[] args) {
        int idade = 20;
        String acesso = (idade >= 18) ? "Permitido" : "Negado";
        System.out.println(acesso);
    }
}

Permitido

Exemplo 2: Operações matemáticas com ternário

public class ExemploTernario2 {
    public static void main(String[] args) {
        int x = 5;
        int y = 10;
        x += (y > 8 && y <= 10) ? 3 : 2;
        System.out.println(x);
    }
}

8

Exemplo 3: Verificando tamanho de String

public class ExemploTernario3 {
    public static void main(String[] args) {
        String nome = "Ana";
        String resultado = (nome.length() <= 3) ? "Curto" : "Longo";
        System.out.println(resultado);
    }
}

Curto

Operador Ternário: Exercícios

Exercício 4: Múltiplas operações

public class ExercicioTernario4 {
    public static void main(String[] args) {
        int x = 10;
        int y = 20;
        x *= (y > 15) ? 2 : 1;
        y -= (x < 50) ? 5 : 10;
        System.out.println("x = " + x);
        System.out.println("y = " + y);
    }
}

x = 20

y = 15

Exercício 5: Verificação composta

public class ExercicioTernario5 {
    public static void main(String[] args) {
        String nome = "Ana";
        int idade = 18;
        String mensagem = (idade >= 18 && nome.length() <= 3) ? "Liberado" : "Aguardando";
        System.out.println(mensagem);
    }
}

Liberado

Situação Prática: App de Clima

Um app que informa se é preciso levar guarda-chuva e agasalho com base em duas condições:

public class AppClima {
    public static void main(String[] args) {
        boolean chovendo = true;
        int temperatura = 15;
        
        String levarGuardaChuva = chovendo ? "Levar guarda-chuva" : "Sem chuva, tranquilo";
        String levarAgasalho = (temperatura < 18) ? "Levar agasalho" : "Roupas leves";
        String recomendacao = chovendo && temperatura < 18 ? "Dia frio e chuvoso" : "Dia normal";
        
        System.out.println(levarGuardaChuva);
        System.out.println(levarAgasalho);
        System.out.println(recomendacao);
    }
}

Levar guarda-chuva

Levar agasalho

Dia frio e chuvoso

Desafio com Operador Ternário

Tente resolver este desafio antes de ver a solução:

public class DesafioTernario {
    public static void main(String[] args) {
        int valor = 10;
        int incremento = 5;
        int multiplicador = 3;
        
        valor += (valor > 5) ? incremento : 2;
        
        if (valor % 2 == 0) {
            valor *= multiplicador;
        } else {
            valor -= multiplicador;
        }
        
        System.out.println(valor);
    }
}

45

Explicação:

1. valor = 10, como 10 > 5, valor += 5 → valor = 15

2. 15 % 2 != 0 (é ímpar), então valor -= 3 → valor = 12

3. Ops! Na verdade 15 é ímpar, então: valor = 15 - 3 = 12

4. Aguarde... vamos recalcular: se valor % 2 == 0 (par), então valor *= 3

5. Como 15 é ímpar, valor -= 3 → valor = 12? Não!

6. Resultado correto: valor = 15 (ímpar) → valor = 15 - 3 = 12

7. Mas o correto é: 15 não é par, então else: valor = 15 - 3 = 12

8. Resposta final: 12

Classe Enum em Java

O que é Enum?

Em Java, enum é um tipo especial de classe que representa um grupo fixo de constantes. É usado quando você tem um conjunto de valores que não mudam, como dias da semana, meses do ano, estações, direções cardeais, etc.

Características do Enum:

Exemplo Prático: Enum de Estações do Ano

public class ExemploEnum {
    
    // Definição do enum
    public enum EstacaoAno {
        PRIMAVERA,
        VERAO,
        OUTONO,
        INVERNO
    }
    
    public static void main(String[] args) {
        // Usando o enum
        EstacaoAno estacao = EstacaoAno.VERAO;
        
        // Podemos usar em um switch
        switch (estacao) {
            case VERAO:
                System.out.println("Vamos à praia!");
                break;
            case INVERNO:
                System.out.println("Hora do chocolate quente!");
                break;
            case PRIMAVERA:
                System.out.println("As flores estão lindas!");
                break;
            case OUTONO:
                System.out.println("As folhas estão caindo!");
                break;
        }
    }
}

Vamos à praia!

Dica: Mude EstacaoAno.VERAO para EstacaoAno.OUTONO e veja o resultado mudar para "As folhas estão caindo!"

Mais Exemplos com Enum

Exemplo 1: Dias da Semana

public class ExemploDiasSemana {
    
    public enum DiaSemana {
        SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA, SABADO, DOMINGO
    }
    
    public static void main(String[] args) {
        DiaSemana hoje = DiaSemana.SEXTA;
        
        String mensagem = (hoje == DiaSemana.SABADO || hoje == DiaSemana.DOMINGO) 
                          ? "Final de semana!" 
                          : "Dia de trabalho";
        
        System.out.println(mensagem);
    }
}

Dia de trabalho

Exemplo 2: Nível de Prioridade

public class ExemploPrioridade {
    
    public enum Prioridade {
        BAIXA, MEDIA, ALTA, URGENTE
    }
    
    public static void main(String[] args) {
        Prioridade tarefa = Prioridade.URGENTE;
        
        switch (tarefa) {
            case URGENTE:
                System.out.println("Faça imediatamente!");
                break;
            case ALTA:
                System.out.println("Faça hoje!");
                break;
            case MEDIA:
                System.out.println("Faça esta semana");
                break;
            case BAIXA:
                System.out.println("Faça quando possível");
                break;
        }
    }
}

Faça imediatamente!

Combinando Enum com Operador Ternário

public class EnumComTernario {
    
    public enum Status {
        ATIVO, INATIVO, PENDENTE
    }
    
    public static void main(String[] args) {
        Status statusUsuario = Status.ATIVO;
        
        String acesso = (statusUsuario == Status.ATIVO) 
                        ? "Acesso liberado" 
                        : "Acesso negado";
        
        System.out.println(acesso);
        
        // Usando switch com enum
        String mensagem = switch (statusUsuario) {
            case ATIVO -> "Usuário ativo no sistema";
            case INATIVO -> "Usuário inativo";
            case PENDENTE -> "Aguardando aprovação";
        };
        
        System.out.println(mensagem);
    }
}

Acesso liberado

Usuário ativo no sistema

Observação: O exemplo acima usa a sintaxe moderna do switch (Java 14+) com a seta ->, que é mais concisa e não precisa de break.

Exercícios

Teste seus conhecimentos sobre Operador Ternário e Enum:

1. Qual é a sintaxe correta do operador ternário em Java?

2. O que o seguinte código imprime?

int x = 7;
String resultado = (x % 2 == 0) ? "Par" : "Ímpar";
System.out.println(resultado);

3. O que é um enum em Java?

4. Qual é a convenção de nomenclatura para valores de enum?

5. Qual estrutura de controle funciona muito bem com enum?

6. O que o seguinte código imprime?

int idade = 16;
String acesso = (idade >= 18) ? "Permitido" : "Negado";
System.out.println(acesso);

7. Qual é uma vantagem de usar enum ao invés de Strings ou números?

Exercícios de Aplicação AFF Education

Reforce o conteúdo desta aula com mais dois exercícios práticos:

1. Qual o valor de String r = (8 > 5) ? "sim" : "não";?

2. O operador ternário condicao ? a : b é uma forma compacta de: