Ajuda - Diferença Entre Tempo

2 respostas
I

Construir um programa em Java para ler duas medições de tempo (hora e minuto), calcular e exibir a
diferença entre as mesmas. Considere que a segunda medição é maior que a primeira e referem-se ao
mesmo dia. Sugestão: Calcule a diferença em minutos e converta o resultado para hora : minuto.
Ex.: Medição 1: 14 h e 50 min
Medição 2: 16 h e 10 min
Diferença : 1 h e 20 min.

Dúvida - A diferença de minutos não está conforme a hora, Devo usar estrutura condicional?

import java.util.Scanner;

public class Questão08 {

public static void main (String args[]){

int hor1, hor2, min1, min2, dif, difm;
Scanner entrada = new Scanner (System.in);
	System.out.println("Digite hor1");
	hor1 = entrada.nextInt();
	System.out.println("Digite min1");
	min1 = entrada.nextInt();
	System.out.println("Digite hor2");
	hor2 = entrada.nextInt();
	System.out.println("Digite min2");
	min2 = entrada.nextInt();
	dif  =  (60*(hor2 - hor1) - (min2 - min1)) / 60  ;
	difm = (min2 - min1);
	
	System.out.println((dif));
	System.out.println((difm));

}

}

2 Respostas

gilvan.sfilho

Cara, o problema ta no teu algoritmo…
Utilize:

dif = ((60*hor2)+min2) - ((60*hor1)+min1)

Isso ai já te da a diferença em minutos, que no caso do exemplo que você sitou o resultado é 80.
Abraços.

I

Kra, não consegui da forma q vc me respondeu, mas fiz a estrutura condicional e deu Certo,
Segue o código abaixo

import java.util.Scanner;

public class Questão08 {

public static void main (String args[]){

int hor1, hor2, min1, min2, dif = 0, difh, difm;
Scanner entrada = new Scanner (System.in);
	System.out.println("Digite hor1");
	hor1 = entrada.nextInt();
	System.out.println("Digite min1");
	min1 = entrada.nextInt();
	System.out.println("Digite hor2");
	hor2 = entrada.nextInt();
	System.out.println("Digite min2");
	min2 = entrada.nextInt();
	if (hor2 >= hor1 && min2 >= min1){
		dif = (hor2 - hor1) * 60 + (min2-min1);
	}
	else { 
		dif = ( 60 - min1 + min2) + (hor2 - hor1 -1) * 60;
	}
	difh = dif / 60;
	difm = dif % 60;
	System.out.println(Math.abs(difh) + "h :" + Math.abs(difm) + "min");
	

}

}

Criado 5 de março de 2011
Ultima resposta 12 de mar. de 2011
Respostas 2
Participantes 2