Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Lembrete de pagamento

Olá!

Segue minha resolução:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;

public class LembretePagamento {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println("Insira a data de vecimento do boleto: ");
        DateTimeFormatter dataFormatada = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        LocalDate dataVencimento = LocalDate.parse(sc.next(), dataFormatada);
        System.out.println("Insira com quantos dias de antecedência você quer ser lembrado: ");
        int diasLembrete = sc.nextInt();
        LocalDate dataLembrete = dataVencimento.minusDays(diasLembrete);
        while (dataLembrete.isEqual(dataVencimento)){
            System.out.println("A data do lembrete deve ser diferente da data de vencimento do boleto!\nFavor inserir novamente!");
            diasLembrete = sc.nextInt();
        }
        System.out.println("Data do lembrete: " + dataLembrete.format(dataFormatada));
        sc.close();
    }

}

Saídas:

Insira a data de vecimento do boleto: 
20/03/2026
Insira com quantos dias de antecedência você quer ser lembrado: 
0
A data do lembrete deve ser diferente da data de vencimento do boleto!
Favor inserir novamente!
20/03/2025
Insira com quantos dias de antecedência você quer ser lembrado: 
5
Data do lembrete: 15/03/2025
1 resposta
solução!

Olá, Victor, como vai?

Seu código atende aos requisitos do exercício e demonstra um bom uso da classe LocalDate para manipulação de datas e do DateTimeFormatter para a formatação da saída. A lógica de subtrair os dias utilizando o método minusDays é a forma mais eficiente de realizar essa operação em Java.

Uma observação importante sobre a estrutura de repetição que você adicionou é que o cálculo da variável dataLembrete ocorre antes do laço while. Caso a condição de igualdade seja atendida e o usuário insira um novo valor para diasLembrete, a variável dataLembrete não será atualizada com o novo cálculo dentro do laço, o que manteria o programa em um estado inconsistente. Para que a validação funcione conforme o esperado, o cálculo deve ser refeito sempre que um novo valor for lido.

Como sugestão de melhoria para futuras implementações, você pode considerar o uso de blocos try-catch para lidar com possíveis erros de digitação na data, o que evita que o programa pare de funcionar inesperadamente.

Parabéns pelo empenho em praticar esses conceitos e por compartilhar sua resolução. Continue compartilhando seus projetos. O fórum está a disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!