1
resposta

[Projeto] CalculandoADataDeEntrega

eu adicionei uma dificuldade, para que so conte os dias uteis

package br.com.nadson.desafiosc5.principal;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.time.temporal.ChronoUnit;
import java.util.Scanner;

public class CalculandoADataDeEntrega {
    public static void main(String[] args) {

        try (Scanner entrada = new Scanner(System.in)) {

            DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd/MM/yyyy");

            LocalDate dataInicial = null;


            while (dataInicial == null) {
                System.out.print("Informe a data inicial (dd/MM/yyyy): ");
                String input = entrada.nextLine();

                try {
                    dataInicial = LocalDate.parse(input, formato);
                } catch (DateTimeParseException e) {
                    System.out.println("Data inválida! Use o formato dd/MM/yyyy.");
                }
            }

            long diasDePrazo = -1;

            while (diasDePrazo < 0) {
                System.out.print("Informe o prazo de entrega em dias úteis (apenas números): ");

                if (entrada.hasNextLong()) {
                    diasDePrazo = entrada.nextLong();

                    if (diasDePrazo < 0) {
                        System.out.println("O prazo não pode ser negativo.");
                    }
                } else {
                    System.out.println("Entrada inválida! Digite somente números.");
                    entrada.next();
                }
            }

            LocalDate dataFinal = calcularDataUtil(dataInicial, diasDePrazo);

            System.out.println("Data final da entrega (dias úteis): " + dataFinal.format(formato));
        }
    }

    private static LocalDate calcularDataUtil(LocalDate dataInicial, long dias) {
        LocalDate data = dataInicial;
        long diasContados = 0;

        while (diasContados < dias) {
            data = data.plus(1, ChronoUnit.DAYS);

            DayOfWeek dia = data.getDayOfWeek();

            boolean diaUtil =
                    dia != DayOfWeek.SATURDAY &&
                            dia != DayOfWeek.SUNDAY;

            if (diaUtil) {
                diasContados++;
            }
        }

        return data;
    }
}
1 resposta

Tudo bem, Nadson?

Excelente ideia adicionar a regra de contar apenas dias úteis e você implementou isso de forma muito limpa. Parabéns pela dedicação na prática do Java! É muito importante esse processo para o seu desenvolvimento técnico.

Continue se dedicando aos estudos e qualquer dúvida, compartilhe.

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