Exercício 1. Um professor deseja um programa que leia a nota de um aluno pelo teclado (usando Scanner) e exiba o conceito correspondente:

Faixa Conceito
9,0 – 10,0 A
7,0 – 8,9 B
5,0 – 6,9 C
< 5,0 D
  1. Crie uma classe ConversorDeNotas com um método obterConceito(double nota) que:
  2. No método main, use Scanner para ler a nota digitada pelo usuário e chame obterConceito. O código deve conter:
  3. Coloque a lógica dentro de um laço que permita ao usuário tentar novamente até fornecer uma entrada válida.

Exercício 2. Um arquivo chamado alunos.csv contém dados de alunos no seguinte formato (um aluno por linha):

nome;nota1;nota2;nota3
Ana;8.5;7.0;9.0
Bruno;5.0;4.5;6.0
Carla;10.0;9.5;8.0
  1. Crie um método gerarRelatorio(String caminhoEntrada, String caminhoSaida) que:
  2. Implemente duas versões desse método:
  3. Em ambas as versões, trate FileNotFoundException (arquivo de entrada inexistente) e IOException (erro durante leitura/escrita) com mensagens descritivas.
  4. No main, chame ambas as versões e observe o comportamento quando o arquivo de entrada não existe.

Exercício 3. Considere um sistema simplificado de agendamento de serviços em uma oficina mecânica. A oficina possui horários disponíveis (por exemplo, "08:00", "10:00", "14:00", "16:00") e cada horário só pode ser ocupado por um cliente.

  1. Crie duas exceções personalizadas (checked):

    Ambas devem estender Exception e possuir construtores que recebam uma mensagem descritiva e o horário.

  2. Crie uma classe Agenda com:

  3. No main, simule as seguintes situações, tratando cada exceção com try/catch:

  4. Crie também um método agendarOuSugerir(String horario, String cliente) que não trate as exceções internamente, mas as declare com throws, delegando o tratamento ao código chamador.


Exercício 4. Considere um sistema simples de processamento de pagamentos que suporta dois meios: saldo em conta e cartão de crédito.

  1. Crie a seguinte hierarquia de exceções (todas checked):

    PagamentoException (extends Exception)
    ├── SaldoInsuficienteException
    └── CartaoExpiradoException