IF, ELSE IF e ELSE em Java

Guia completo para dominar estruturas condicionais em Java do jeito mais simples possível

1. O Básico: Entendendo as Condicionais

No mundo da programação, as estruturas condicionais são como a capacidade de tomar decisões no dia a dia. Imagine que você acorda e pensa: "Se estiver sol, vou à praia. Senão, se estiver nublado, vou ao parque. Caso contrário (se chover), vou ficar em casa."

Em Java, e em outras linguagens, as estruturas if, else if e else permitem que seu programa siga diferentes caminhos lógicos dependendo de certas condições serem verdadeiras ou falsas. Elas são fundamentais para criar programas que reagem a entradas do usuário, condições do sistema ou valores de variáveis, tornando-os dinâmicos e inteligentes.

Dominar as condicionais é um passo crucial para qualquer desenvolvedor, pois elas são a espinha dorsal da lógica de negócios em quase todo software que você encontrará.

2. IF, ELSE IF e ELSE: As Ferramentas da Decisão

2.1. O que é if?

O if (se) é a estrutura condicional mais básica. Ele testa uma única condição. Se a condição for verdadeira, o bloco de código dentro do if é executado. Se for falsa, o bloco é ignorado, e o programa continua sua execução a partir da linha seguinte ao if (ou else, se houver).

Sintaxe do if:
java
if (condicao) {
    // Código a ser executado SOMENTE se a condicao for verdadeira
}
// O programa continua aqui, independentemente da condicao

2.2. O que é else?

O else (senão) atua como uma "alternativa" ao if. Ele sempre vem junto com um if. Se a condição do if for falsa, o bloco de código dentro do else é executado. A lógica é simples: "Se isso for verdade, faça A. Senão, faça B."

Sintaxe do if-else:
java
if (condicao) {
    // Código para quando a condicao for verdadeira
} else {
    // Código para quando a condicao for falsa (a alternativa)
}

2.3. O que é else if?

O else if (senão se) é usado para testar múltiplas condições em sequência. Ele sempre vem depois de um if (ou outro else if). Se a condição do if inicial for falsa, o programa passa para o primeiro else if e testa sua condição. Se for verdadeira, executa seu bloco e pula o restante. Se for falsa, vai para o próximo else if (se houver), e assim por diante.

Sintaxe do if-else if-else:
java
if (primeiraCondicao) {
    // Executa se a primeira condição for verdadeira
} else if (segundaCondicao) {
    // Executa se a primeira for falsa E a segunda for verdadeira
} else if (terceiraCondicao) {
    // Executa se a primeira e segunda forem falsas E a terceira for verdadeira
} else {
    // Executa se TODAS as condições anteriores forem falsas (opcional)
}
Comparação: O if é para uma decisão única. O if-else oferece dois caminhos. O if-else if-else permite múltiplos caminhos, testando um após o outro até encontrar uma condição verdadeira ou cair no else final.

3. Regras de Ouro das Condicionais em Java

3.1. Estrutura dos Blocos com Chaves { }

Em Java, os blocos de código associados a um if, else if ou else são delimitados por chaves { }. Embora seja possível omitir as chaves para um único comando, é uma má prática e altamente desencorajado.

Sempre use chaves { }: Isso melhora a legibilidade do código, evita erros quando você ou outro programador adicionar mais linhas de código no futuro e define claramente o escopo do bloco.

3.2. Comparando Valores: == vs .equals()

Esta é uma das maiores fontes de erro para iniciantes em Java e crucial para entender.

  • == (Operador de Comparação): Para tipos primitivos (int, double, boolean, char), ele compara os valores. Para objetos (como String), ele compara as referências de memória.
  • .equals() (Método de Objeto): É um método disponível para todos os objetos (incluindo String) que compara o conteúdo dos objetos.

A regra é: Sempre use .equals() para comparar o conteúdo de objetos, especialmente Strings.

3.3. Valores Aceitos nas Condições

A expressão dentro dos parênteses de um if ou else if deve sempre resultar em um valor booleano (true ou false).

3.4. A Importância da Ordem das Condições

Em uma cadeia de if-else if-else, as condições são avaliadas na ordem em que aparecem. A primeira condição que for verdadeira terá seu bloco executado, e as demais serão ignoradas.

Cuidado com a ordem: Coloque as condições mais específicas (ou restritivas) primeiro e as mais gerais por último.

4. Exemplos Práticos

Exemplo 1: Condição Simples com if

java
public class ExemploIf {
    public static void main(String[] args) {
        int temperatura = 25; // Define a temperatura

        if (temperatura > 20) { // Condição: Se temperatura for maior que 20...
            System.out.println("Está calor hoje!"); // ...então imprime esta mensagem
        }
        System.out.println("Fim do programa."); // Esta linha sempre executa
    }
}

Exemplo 2: Uso de if e else

java
public class ExemploIfElse {
    public static void main(String[] args) {
        boolean temCafe = false; // Define se há café

        if (temCafe) { // Condição: Se temCafe for verdadeiro...
            System.out.println("Que bom, vou tomar café!");
        } else { // Senão (se temCafe for falso)...
            System.out.println("Preciso fazer mais café.");
        }
    }
}

Exemplo 3: Sistema de Notas Completo

java
import java.util.Scanner;

public class ExemploNotas {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Digite a nota do aluno (0-100): ");
        int nota = scanner.nextInt();

        if (nota >= 90) { // Primeira condição: Se nota for 90 ou mais...
            System.out.println("Excelente! Conceito A.");
        } else if (nota >= 70) { // Senão, se nota for 70 ou mais...
            System.out.println("Muito bom! Conceito B.");
        } else if (nota >= 50) { // Senão, se nota for 50 ou mais...
            System.out.println("Aprovado! Conceito C.");
        } else { // Senão (se nenhuma das anteriores for verdadeira)...
            System.out.println("Reprovado. Precisa estudar mais.");
        }
        
        scanner.close();
    }
}

Exemplo 4: Comparação de Strings

java
String senhaCorreta = "senai123";
String senhaDigitada = "senai123"; // Simula entrada do usuário

if (senhaDigitada.equals(senhaCorreta)) { // Forma CORRETA de comparar Strings
    System.out.println("Senha correta! Acesso permitido.");
} else {
    System.out.println("Senha incorreta! Acesso negado.");
}

Exemplo 5: Verificar Idade para Votar

java
import java.util.Scanner;

public class Eleitor {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        System.out.print("Digite sua idade: ");
        int idade = input.nextInt();

        if (idade < 16) {
            System.out.println("Você ainda não pode votar.");
        } else if (idade >= 18 && idade <= 70) {
            System.out.println("Seu voto é obrigatório!");
        } else {
            System.out.println("Seu voto é facultativo.");
        }

        input.close();
    }
}

5. Exercícios Práticos

📝 Exercício 1: Par ou Ímpar

Crie um programa que peça um número inteiro ao usuário e diga se ele é par ou ímpar usando if e else.

Mostrar Solução
java
import java.util.Scanner;

public class ParOuImpar {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Digite um número inteiro: ");
        int num = sc.nextInt();

        if (num % 2 == 0) {
            System.out.println("O número " + num + " é PAR.");
        } else {
            System.out.println("O número " + num + " é ÍMPAR.");
        }
        sc.close();
    }
}

📝 Exercício 2: Dia da Semana

Escreva um programa que peça um número de 1 a 7 e imprima o dia da semana correspondente. Use if-else if-else.

Mostrar Solução
java
import java.util.Scanner;

public class DiaDaSemana {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Digite um número de 1 a 7: ");
        int dia = sc.nextInt();

        if (dia == 1) {
            System.out.println("Domingo");
        } else if (dia == 2) {
            System.out.println("Segunda-feira");
        } else if (dia == 3) {
            System.out.println("Terça-feira");
        } else if (dia == 4) {
            System.out.println("Quarta-feira");
        } else if (dia == 5) {
            System.out.println("Quinta-feira");
        } else if (dia == 6) {
            System.out.println("Sexta-feira");
        } else if (dia == 7) {
            System.out.println("Sábado");
        } else {
            System.out.println("Número inválido.");
        }
        sc.close();
    }
}

📝 Exercício 3: Login Simples

Crie um programa que peça um nome de usuário e uma senha. Se o usuário for "aluno" e a senha for "senai123", imprima "Login bem-sucedido". Use .equals() para as Strings.

Mostrar Solução
java
import java.util.Scanner;

public class Login {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Usuário: ");
        String usuario = sc.nextLine();
        System.out.print("Senha: ");
        String senha = sc.nextLine();

        if (usuario.equals("aluno") && senha.equals("senai123")) {
            System.out.println("Login bem-sucedido!");
        } else {
            System.out.println("Usuário ou senha inválidos.");
        }
        sc.close();
    }
}

📝 Exercício 4: Verificador de Triângulo

Dados três lados de um triângulo, determine se é Equilátero (3 lados iguais), Isósceles (2 lados igu