Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução do Desafio

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

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

    Scanner scanner = new Scanner(System.in);
    String entrada;
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");

    System.out.print("Digite o horário de entrada (HH:mm): ");
    entrada= scanner.nextLine();
    LocalTime horarioEntrada = LocalTime.parse(entrada, formatter);

    System.out.print("Digite o horário real de saída (HH:mm): ");
    entrada = scanner.nextLine();
    LocalTime horarioSaida = LocalTime.parse(entrada, formatter);

    System.out.print("Digite a carga horária diária (em horas): ");
    entrada = scanner.nextLine();
    int cargaHorariaDiaria = Integer.parseInt(entrada);

    LocalTime horarioSaidaPrevisto = horarioEntrada.plusHours(cargaHorariaDiaria);

    Duration saldoHoras = Duration.between(horarioSaidaPrevisto, horarioSaida);

    System.out.println("\nHorario de entrada: " + horarioEntrada);
    System.out.println("Horario de saída previsto: " + horarioSaidaPrevisto);
    System.out.println("Horario real de saída: " + horarioSaida);
    System.out.println("Saldo de horas: " + saldoHoras.toHours() + "h " + saldoHoras.toMinutesPart() + "min");

    scanner.close();

}

}

1 resposta

Oi, Pablo! Tudo bem?

Que bacana ver você compartilhando a sua resolução para a atividade sobre controle de expediente em Java.

Notei que você organizou muito bem a lógica utilizando classes do pacote java.time pra calcular o saldo de horas trabalhadas com precisão. Uma dica interessante para o futuro é tratar exceções de formatação caso o usuário digite um horário fora do padrao esperado, utilizando um bloco try-catch pra evitar que o programa quebre. Algo assim:


try {
    LocalTime horario = LocalTime.parse(entrada, formatter);
} catch (DateTimeParseException e) {
    System.out.println("Formato invalido. Use HH:mm.");
}

Esse código tenta converter o texto e, se houver falha, avisa o usuário sem interromper a execução abruptamente.

Você curtiu esse desafio?

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