Olá, Bernardo. Como vai?
Parabéns por mais uma excelente resolução! O seu código para o Exercício 5 ficou impecável e 100% correto.
A utilização da classe LocalDate é a escolha ideal para esse cenário, pois datas de vencimento de contas, boletos ou contratos não necessitam de informações de horário (horas, minutos e segundos) ou fuso horário, necessitando apenas da precisão do dia, mês e ano.
Você também utilizou perfeitamente o método .plusMonths(1). Vale destacar um conceito fundamental da API java.time que você aplicou aqui mesmo sem perceber: a Imutabilidade.
As classes dessa nova API de datas do Java são imutáveis. Isso significa que quando você faz dataDeVencimentoOriginal.plusMonths(1), o Java não altera o valor dentro da variável original; em vez disso, ele calcula o novo período e gera um objeto inteiramente novo na memória. Você capturou esse novo objeto perfeitamente ao criar a variável dataDeVencimentoNova. Em sistemas concorrentes (onde vários processos rodam ao mesmo tempo), essa imutabilidade evita bugs graves de dados sendo alterados indevidamente.
Para agregar ainda mais valor ao seu código e trazer uma sugestão de boa prática adotada no mercado, separei duas pequenas dicas de padrão de escrita:
1. Correção de Digitação (Typo)
No nome da sua primeira variável, houve um pequeno erro de digitação: dataDeVencimentoOrignal (faltou a letra "i" em Original). Manter a escrita das variáveis correta é uma boa prática importante, pois evita que outros desenvolvedores se confundam ao tentar usar o autocompletar do editor de código.
2. O Padrão de Formatação Oficial Brasileiro
No seu DateTimeFormatter, você utilizou o padrão "dd-MM-yyyy" com hifens:
DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd-MM-yyyy");
Esse formato funciona perfeitamente, mas se o objetivo do seu sistema for exibir a data no padrão oficial de documentos e boletos bancários do Brasil, a convenção do mercado é utilizar as barras (/) em vez dos hifens: "dd/MM/yyyy".
Veja como o seu código fica aplicando esses pequenos refinamentos:
LocalDate dataDeVencimentoOriginal = LocalDate.of(2026, 05, 25);
LocalDate dataDeVencimentoNova = dataDeVencimentoOriginal.plusMonths(1);
// Alterando para o padrão de barras utilizado no Brasil
DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd/MM/yyyy");
System.out.println("Data de vencimento original: " + dataDeVencimentoOriginal.format(formato));
System.out.println("Nova data de vencimento: " + dataDeVencimentoNova.format(formato));
O seu ritmo de estudos e a qualidade das suas resoluções nesta seção de data e hora estão excelentes. Continue praticando!
Espero que possa ter lhe ajudado!