Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Duration com input

Gostaria de saber como fazer este código funcionar, inserindo o horario no system.in, e depois calculando a duracao entre o inicial e o final

Scanner leitura = new Scanner(System.in);
        DateTimeFormatter formatoHora = DateTimeFormatter.ofPattern("HH:mm");
        DateTimeFormatter formatoDia = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        System.out.println("Que tarefa deseja registrar?");
        String tarefa = leitura.nextLine();
        System.out.println("Qual o nome do executante?");
        String funcionario = leitura.nextLine();
        System.out.println("Qual o horário inicial da tarefa?");
        LocalTime horaInicioTarefa = LocalTime.of(leitura.nextInt(), leitura.nextInt());
        System.out.println("Qual o horário final da tarefa?");
        LocalTime horaFinalTarefa = LocalTime.of(leitura.nextInt(), leitura.nextInt());
        Duration duracaoTarefa = Duration.between(horaInicioTarefa, horaFinalTarefa);
        System.out.println(duracaoTarefa);
2 respostas
solução!

Oii, Laura.

Com o que você descreveu, seu código tá quase certo! O problema é usar nextInt() para horas e minutos. É mais prático ler tudo como String e depois converter usando LocalTime.parse.

Veja este exemplo pra calcular a duracao entre horarios lidos pelo System.in:



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

public class DuracaoTarefa {
    public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);
        DateTimeFormatter formatoHora = DateTimeFormatter.ofPattern("HH:mm");

        System.out.println("Que tarefa deseja registrar?");
        String tarefa = leitura.nextLine();

        System.out.println("Qual o nome do executante?");
        String funcionario = leitura.nextLine();

        System.out.println("Qual o horario inicial da tarefa? (Ex: 14:30)");
        String inicioStr = leitura.nextLine();
        LocalTime horaInicioTarefa = LocalTime.parse(inicioStr, formatoHora);

        System.out.println("Qual o horario final da tarefa? (Ex: 16:45)");
        String finalStr = leitura.nextLine();
        LocalTime horaFinalTarefa = LocalTime.parse(finalStr, formatoHora);

        Duration duracaoTarefa = Duration.between(horaInicioTarefa, horaFinalTarefa);

        System.out.println("Duracao em minutos: " + duracaoTarefa.toMinutes());
    }
}

Explicacao: Este codigo usa nextLine() para ler tudo como texto no formato HH:mm, depois converte para LocalTime e calcula a Duration. Resultado:

resultado da atividade

Espero ter ajudado.

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

Muuuito obrigadaaa!!! Eu imaginei que tivesse algo a ver com isso e fiquei muito feliz de descobrir que eu tava certa hehe Ajudou demaiiis<3