package com.vn.challenge5;
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 formatter = DateTimeFormatter.ofPattern("HH:mm");
System.out.println("Digite o horário de entrada (HH:mm): ");
LocalTime entrada = LocalTime.parse(sc.next(), formatter);
int cargaHoraria = 0;
while (true) {
try {
System.out.println("Digite a carga horária de trabalho (em horas): ");
cargaHoraria = sc.nextInt();
break;
} catch (InputMismatchException e) {
System.out.println("Digite um número válido para a carga horária.");
sc.nextLine();
}
}
System.out.println("Digite o horário de saída: ");
LocalTime saida = LocalTime.parse(sc.next(), formatter);
LocalTime saidaPrevista = entrada.plusHours(cargaHoraria);
Duration diferenca = Duration.between(saidaPrevista, saida);
long horas = diferenca.toHours();
long minutos = diferenca.toMinutesPart();
String sinal = (horas > 0 || minutos > 0) ? "+" : (horas < 0 || minutos < 0) ? "-" : "";
String saldoFormatado = (horas == 0 && minutos == 0)
? "0h 0min"
: sinal + Math.abs(horas) + "h " + Math.abs(minutos) + "min";
System.out.println("""
Horário de entrada: %s
Horário de saída previsto: %s
Horário de saída real: %s
Saldo de horas: %s
""".formatted(
entrada.format(formatter),
saidaPrevista.format(formatter),
saida.format(formatter),
saldoFormatado
));
sc.close();
}
}