1
resposta

Projeto Controle de Expediente

import java.time.Duration;
import java.time.LocalTime;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;

public class Main {
    static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
        System.out.print("Digite o horário de entrada (HH:mm): ");
        LocalTime entrada = LocalTime.parse(scanner.next(), formatter);

        System.out.println("Digite a Carga horaria diaria em horas ");
        LocalTime cargaHoraria = LocalTime.parse(scanner.next(), formatter);

        System.out.println("Digite o Horario real de Saida: "  );
        LocalTime horaSaida = LocalTime.parse(scanner.next(),formatter);
        Duration duration = Duration.between(entrada,horaSaida);
        LocalTime horaSaidaPrevista = cargaHoraria.plus(duration);

        
        System.out.println("Horario de entrada : " + entrada);
        System.out.println("Horario de Saida Previsto : " + horaSaidaPrevista);
        System.out.println("Horario real de saida : " +  horaSaida);



        if(horaSaidaPrevista.equals(horaSaida)){
            Duration saldo = Duration.between(horaSaida,horaSaidaPrevista);
            System.out.println("Saldo de horas : " + saldo.toHours()+"h" + " " + saldo.toMinutesPart()+ " min");
        } else if (horaSaida.isBefore(horaSaidaPrevista)) {
            Duration saldonegativo = Duration.between(horaSaidaPrevista,horaSaida);
            System.out.println("Saldo de horas : " + saldonegativo.toHours()+"h" + " " + saldonegativo.toMinutesPart()+ " min" );
        }


    }
}
1 resposta

Olá, Weid! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso das classes LocalTime e Duration para manipular horários, utilizou muito bem o DateTimeFormatter para garantir o formato correto das entradas e ainda compreendeu a importância de validar o saldo de horas com base na comparação entre saída prevista e saída real.

Uma dica interessante para o futuro é representar a carga horária como Duration em vez de LocalTime, o que evita confusões ao somar tempos:

System.out.println("Digite a carga horária diária em horas: ");
int horas = scanner.nextInt();
Duration cargaHoraria = Duration.ofHours(horas);

LocalTime horaSaidaPrevista = entrada.plus(cargaHoraria);

Isso faz com que o cálculo da saída prevista seja mais preciso e sem risco de interpretar a carga horária como um horário do dia.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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