Resolvi mesclar os estudos das variáveis de datas com os estudos de classes, invés de pegarmos a quantidade de dias de atraso "na mão" fiz uma regra de negocio através de datas, onde pega a data de retirada do pedido e calcula quantos dias se passaram para calcular o valor da multa.
(Coloquei um prazo de 2 dias para entrega do livro)
Tem algo que eu posso melhorar ou ajustar?
Main:
package br.com.atividade.nove;
public class Main {
public static void main(String[] args) {
Pedido pedido1 = new Pedido("Marco Aurélio","02/01/2026");
pedido1.exibirDetalhes();
}
}
Class Pedido:
package br.com.atividade.nove;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
public class Pedido {
private String titulo;
private LocalDate dataRetirada = LocalDate.now();
private static final int PERIODO_DEVOLUCAO = 2;
private static final double TAXA_ATRASO = 2.5;
private LocalDate dataDevolucao;
public Pedido(String titulo, String data) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
this.titulo = titulo;
this.dataDevolucao = LocalDate.parse(data,formatter);
}
public int calcularDiasDePosse(){
int dias = (int) ChronoUnit.DAYS.between(dataRetirada, dataDevolucao);
return dias;
}
public String formatarDatas(LocalDate data){
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
return data.format(formatter);
}
public void exibirDetalhes(){
if (calcularDiasDePosse()>PERIODO_DEVOLUCAO) {
System.out.printf("""
Livro: %s
Dias de atraso: %d
Multa: %.2f
Dia da retirada: %s
Dia da devolução: %s
""", titulo, calcularDiasDePosse()-PERIODO_DEVOLUCAO, ((calcularDiasDePosse()-PERIODO_DEVOLUCAO) * TAXA_ATRASO),
formatarDatas(dataRetirada),formatarDatas(dataDevolucao));
} else {
System.out.printf("""
Livro: %s
Foi devolvido dentro do prazo.
""", titulo);
}
}
}
Retorno: