Instruções Condicionais

Instruções condicionais permitem que programas executem código diferente com base em diferentes condições. Esta lição cobre a lógica condicional em Java.

Instrução if

A instrução if é a verificação condicional mais básica.

Sintaxe

JAVA
if (condição) {
    // Executado quando a condição é verdadeira
}

Exemplo: if simples

JAVA
public class IfDemo {
    public static void main(String[] args) {
        int age = 20;
        
        if (age >= 18) {
            System.out.println("Você é adulto");
        }
    }
}
▶ Experimente

Instrução if-else

Quando a condição é falsa, o código no bloco else é executado.

Sintaxe

JAVA
if (condição) {
    // Executado quando a condição é verdadeira
} else {
    // Executado quando a condição é falsa
}

Exemplo: if-else

JAVA
public class IfElseDemo {
    public static void main(String[] args) {
        int age = 15;
        
        if (age >= 18) {
            System.out.println("Você é adulto");
        } else {
            System.out.println("Você é menor de idade");
        }
    }
}
▶ Experimente

Instrução if-else if-else

Usada para múltiplas verificações de condições.

Sintaxe

JAVA
if (condição1) {
    // Executado quando condição1 é verdadeira
} else if (condição2) {
    // Executado quando condição2 é verdadeira
} else if (condição3) {
    // Executado quando condição3 é verdadeira
} else {
    // Executado quando nenhuma das condições acima é atendida
}

Exemplo: Calculadora de Notas

JAVA
public class GradeDemo {
    public static void main(String[] args) {
        int score = 85;
        
        if (score >= 90) {
            System.out.println("Excelente");
        } else if (score >= 80) {
            System.out.println("Bom");
        } else if (score >= 70) {
            System.out.println("Médio");
        } else if (score >= 60) {
            System.out.println("Aprovado");
        } else {
            System.out.println("Reprovado");
        }
    }
}
▶ Experimente
💡 Nota: As condições são avaliadas de cima para baixo. Uma vez que uma condição é verdadeira, o código correspondente é executado e nenhuma condição adicional é verificada.

if aninhado

Instruções if podem ser aninhadas umas dentro das outras.

Exemplo: if aninhado

JAVA
public class NestedIfDemo {
    public static void main(String[] args) {
        int age = 25;
        boolean hasID = true;
        
        if (age >= 18) {
            if (hasID) {
                System.out.println("Entrada permitida");
            } else {
                System.out.println("Por favor, mostre seu ID");
            }
        } else {
            System.out.println("Menores não são permitidos");
        }
    }
}
▶ Experimente

Instrução switch

A instrução switch é ideal para verificar uma variável contra múltiplos valores fixos.

Sintaxe

JAVA
switch (variável) {
    case valor1:
        // Executado quando variável igual a valor1
        break;
    case valor2:
        // Executado quando variável igual a valor2
        break;
    default:
        // Executado quando nenhum caso corresponde
}

Exemplo: Dia da Semana

JAVA
public class SwitchDemo {
    public static void main(String[] args) {
        int day = 3;
        
        switch (day) {
            case 1:
                System.out.println("Segunda-feira");
                break;
            case 2:
                System.out.println("Terça-feira");
                break;
            case 3:
                System.out.println("Quarta-feira");
                break;
            case 4:
                System.out.println("Quinta-feira");
                break;
            case 5:
                System.out.println("Sexta-feira");
                break;
            case 6:
                System.out.println("Sábado");
                break;
            case 7:
                System.out.println("Domingo");
                break;
            default:
                System.out.println("Dia inválido");
        }
    }
}
▶ Experimente
⚠️ Propósito do break: Sem break, o programa continua executando o próximo caso. Isso é chamado "fall-through".

Usando Fall-through

Às vezes fall-through é útil, como verificar fins de semana:

JAVA
public class SwitchFallThrough {
    public static void main(String[] args) {
        int day = 6;
        String type;
        
        switch (day) {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                type = "Dia útil";
                break;
            case 6:
            case 7:
                type = "Fim de semana";
                break;
            default:
                type = "Inválido";
        }
        
        System.out.println("Dia " + day + " é " + type);
    }
}

switch aprimorado (Java 14+)

Java 14 introduziu uma sintaxe switch aprimorada que é mais concisa:

JAVA
public class EnhancedSwitch {
    public static void main(String[] args) {
        int day = 3;
        
        String dayName = switch (day) {
            case 1 -> "Segunda-feira";
            case 2 -> "Terça-feira";
            case 3 -> "Quarta-feira";
            case 4 -> "Quinta-feira";
            case 5 -> "Sexta-feira";
            case 6 -> "Sábado";
            case 7 -> "Domingo";
            default -> "Inválido";
        };
        
        System.out.println(dayName);  // Quarta-feira
    }
}

Scanner para Entrada do Usuário

A classe Scanner pode capturar entrada do teclado dos usuários.

Etapas de Uso

JAVA
// 1. Importar a classe Scanner
import java.util.Scanner;

// 2. Criar um objeto Scanner
Scanner scanner = new Scanner(System.in);

// 3. Ler entrada
int num = scanner.nextInt();      // Ler um inteiro
double d = scanner.nextDouble();  // Ler um número de ponto flutuante
String s = scanner.nextLine();    // Ler uma linha de texto

// 4. Fechar o scanner
scanner.close();

Exemplo: Verificação de Entrada do Usuário

JAVA
import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("Digite sua idade: ");
        int age = scanner.nextInt();
        
        if (age >= 18) {
            System.out.println("Você é adulto");
        } else {
            System.out.println("Você é menor de idade");
        }
        
        scanner.close();
    }
}
▶ Experimente

Exemplo: Calculadora Simples

JAVA
import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("Digite o primeiro número: ");
        double num1 = scanner.nextDouble();
        
        System.out.print("Digite o operador (+ - * /): ");
        char operator = scanner.next().charAt(0);
        
        System.out.print("Digite o segundo número: ");
        double num2 = scanner.nextDouble();
        
        double result;
        
        switch (operator) {
            case '+':
                result = num1 + num2;
                System.out.println(num1 + " + " + num2 + " = " + result);
                break;
            case '-':
                result = num1 - num2;
                System.out.println(num1 + " - " + num2 + " = " + result);
                break;
            case '*':
                result = num1 * num2;
                System.out.println(num1 + " * " + num2 + " = " + result);
                break;
            case '/':
                if (num2 != 0) {
                    result = num1 / num2;
                    System.out.println(num1 + " / " + num2 + " = " + result);
                } else {
                    System.out.println("Erro: Não é possível dividir por zero");
                }
                break;
            default:
                System.out.println("Erro: Operador não suportado");
        }
        
        scanner.close();
    }
}
▶ Experimente

❓ Perguntas Frequentes

P: Parênteses são obrigatórios para condições if? R: Sim, as condições devem ser envolvidas em parênteses. Mesmo para uma única instrução, é recomendado usar chaves para o bloco de código.

P: Quais tipos o switch suporta? R: switch suporta byte, short, int, char, String (Java 7+) e enum. Não suporta long, float ou double.

P: O break pode ser omitido? R: Sim, mas isso causará fall-through. Se fall-through for intencional, adicione um comentário para explicar.

📖 Resumo

📝 Exercícios

  1. Ano bissexto: Insira um ano e determine se é um ano bissexto
  2. Calculadora de notas: Insira uma pontuação (0-100) e saída a nota (Excelente/Bom/Médio/Aprovado/Reprovado)
  3. Calculadora: Construa uma calculadora simples usando Scanner

Próxima Lição

Na próxima lição, aprenderemos sobre Loops — fazendo programas repetirem certas operações.

100%