1
resposta

[Projeto] Outra forma.

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

public class RegistroPonto {
    public static void main(String[] args) {
    Scanner sc = 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(sc.next(), formatter);

    System.out.print("Digite a carga horária diária (em horas): ");
    int cargaHoraria = sc.nextInt();

    LocalTime saida = entrada.plusHours(cargaHoraria);

    System.out.print("Digite o horário real de saída (HH:mm): ");
    LocalTime saidaReal = LocalTime.parse(sc.next(), formatter);

    sc.close();

    Duration diferencaJornadaTrabalho = Duration.between(saida, saidaReal);

    String sinal;
    if (diferencaJornadaTrabalho.toMinutes() == 0){
        sinal = "";
    } else if (diferencaJornadaTrabalho.toMinutes() > 0) {
        sinal = "+";
    } else {
        sinal = "-";
    }

    System.out.println("Horário de entrada: " + entrada);
    System.out.println("Horário de saída previsto: " + saida.format(formatter));
    System.out.println("Horário real de saída: " + saidaReal);
    System.out.print("Saldo de hora: " + sinal + Math.abs(diferencaJornadaTrabalho.toHours()) + "h " + Math.abs(diferencaJornadaTrabalho.toMinutesPart()) + "min");
}

}

1 resposta

Oi, Alex! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Seu projeto ficou bem organizado e a lógica para calcular o saldo de horas chama atenção pela forma clara como você tratou o sinal e o uso de Math.abs. Continue assim!

Uma dica interessante para o futuro é usar o método isBefore() quando quiser verificar se um horário vem antes de outro. Isso pode ajudar em comparações simples. Veja este exemplo:


LocalTime inicio = LocalTime.parse("08:00");
LocalTime fim = LocalTime.parse("09:30");

if (inicio.isBefore(fim)) {
    System.out.println("inicio vem antes de fim");
}

Esse código apenas compara dois horários e imprime uma mensagem quando a condição e verdadeira.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

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