2
respostas

Calculo com tempo de entrada e saida

Boa tarde! Estou fazendo um sistema de estacionamento para estudar e gostaria de adicionar um temporizador. Ele deve funcionar junto com uma função de cobrança, ao qual por exemplo, 3 horas equivalem a uma cobrança de R$30,00. No entanto, se eu colocar o horário de entrada 23h e o de saída 1h, o temporizador conta como cobrança negativa. Tem algum jeito de eu fazer o cálculo corretamente?

Os scanners da hora de entrada e hora de saída e o função de valor:

public int horaEntrada() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Hora de entrada: ");
    int horaEntradaScan = scanner.nextInt();
    return horaEntradaScan;
}
public int horaSaida(){
    Scanner scanner = new Scanner(System.in);
    System.out.println("Hora de saída: ");
    int horaSaidaScan = scanner.nextInt();
    return horaSaidaScan;
}
public void value(){
    int y = horaEntrada();
    int x = horaSaida();
    int z = x - y;
    System.out.println("O valor a ser cobrado é: R$" + z * 10);
}
2 respostas

Bom dia, Vitor. Tudo bem?

Eu apliquei um if-else para resolver o problema das horas.

if(x - y < 0) {
    z = (x - y) + 24;
} else {
    z = x - y;
}

Eu fiz uma verificação no cálculo horaSaida() - horaEntrada(). Se esse cálculo gerar um valor negativo, eu somo a diferença das horas pelo valor 24, que é o total de horas num dia. Dessa maneira eu consigo obter, por exemplo, a quantidade de horas que um veículo ficou no estacionamento das 23:00 às 02:00. Caso contrário, eu efetuo o cálculo normal que você já havia aplicado no seu código.

Exemplo:

horaSaida() = 2 horaEntrada() = 23

z = 2 - 23 = -21

Logo,

-21 + 24 = 3

Portanto, 3 é o total de horas que o veículo ficou estacionado.

Espero que faça sentido a minha resolução e espero ter te ajudado.

Abraço,

Luiz Gabriel :)

        int entrada = 23;
        int saida = 1;

        int tempo = saida-entrada + ((entrada < saida) ? 0 : 24);

        System.out.println("O carro ficou " + tempo + " horas na garagem ");

É só botar + 24 horas se o horário de entrada for maior que o de saída, mas e se o carro entrar hoje às 22:00 e sair amanhã às 23:00? Aí tem que incluir o dia do ano também.