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

[Projeto] Controle de expediente

Olá!

Segue minha resolução:

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

public class ControleExpediente {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        DateTimeFormatter horaFormatada = DateTimeFormatter.ofPattern("HH:mm");
        System.out.println("Digite horário de entrada: ");
        LocalTime horaEntrada = LocalTime.parse(sc.next(), horaFormatada);
        Long cargaHoraria = null;

        while (true) {
            try {
                System.out.println("Digite a carga horária de trabalho: ");
                cargaHoraria = sc.nextLong();
                break; 
            } catch (InputMismatchException e) {
                System.out.println("Informe um número válido para a carga horária.");
                sc.nextLine(); 
            }
        }
        
        System.out.println("Digite o horário de saída");
        LocalTime horaSaida = LocalTime.parse(sc.next(),horaFormatada);
        
        Duration expediente = Duration.between(horaEntrada, horaSaida);
        Duration expedienteLiquido = expediente.minusHours(1);
        
        Long horaLiquida = expedienteLiquido.toHours();
        double saldoHoras = horaLiquida - cargaHoraria;
        Long horas = (long) saldoHoras;
        long minutos = Math.round((saldoHoras-horas)*60);
        String formatado = String.format("%02d:%02d", horas, minutos);
        System.out.println("Horário de entrada: " + horaEntrada);
        System.out.println("Carga horária trabalhada: " + cargaHoraria);
        System.out.println("Horário de saída: " + horaSaida);
        System.out.println("Saldo de horas: " + formatado);
        sc.close();

    }
    
}
1 resposta
solução!

Oi, Victor! Como você está?

Meus parabéns pela apresentação da sua resolução da atividade!

Seu código está bem estruturado e a lógica para calcular o saldo de horas, considerando o intervalo e a carga horária, ficou excelente. [

Bons estudos!

Sucesso

Imagem da comunidade