Alarme

Pessoal, estou parado em uma solução. Estou com o seguinte problema, é um alarme que indica quantos minutos faltam para ele despertar.
Ex. 1 35 1 40. Faltam 5 minutos. 2 0 2 20. Faltam 20 minutos. 3 0 4 0. Faltam 60 minutos. E assim por diante.
Tente com a entrada 23 59 0 34 e ele nem responde.

Alguem sabe como resolver? segue o código abaixo.

import java.util.*;

class alarme {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int h1 = 0, m1 = 0, h2 = 0, m2 = 0, difh = 0, difm = 0, min;
		while ((h1 = scan.nextInt()) + (m1 = scan.nextInt())
				+ (h2 = scan.nextInt()) + (m2 = scan.nextInt()) > 0
				&& h1 <= 23 && h2 <= 23 && m1 < 59 && m2 < 59) {
			if (h1 > h2) {
				difh = (23 - h1) + (h2);
			} else {
				difh = h2 - h1;
			}
			if (m1 > m2) {
				difm = (60 - m1) + (m2);
				if (h1 == h2) {
					difh = 23;
				}
			} else
				difm = m2 - m1;
			min = difm + (difh * 60);
			System.out.println(min);
			difm = difh = min = 0;
		}
	}
}

nao verifiquei o código direito. Na entrada dos dados eu coloquei para os minutos serem “<59” logo, qualquer hora que estiver 59 minutos nao ia entrar.

//5474. Alarme Despertador
import java.util.*;

class alarme {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int h1 = 0, m1 = 0, h2 = 0, m2 = 0, difh = 0, difm = 0, min;
		while ((h1 = scan.nextInt()) + (m1 = scan.nextInt())
				+ (h2 = scan.nextInt()) + (m2 = scan.nextInt()) > 0
				&& h1 <= 23 && h2 <= 23 && m1 <= 59 && m2 <= 59) {
			if (h1 > h2) {
				difh = (23 - h1) + (h2);
			} else if (h2 > h1) {
				difh = h2 - h1;
			} else
				difh = 0;
			if (m1 > m2) {
				difm = (60 - m1) + (m2);
				if (h1 == h2) {
					difh = 23;
				}
			} else
				difm = m2 - m1;
			min = difm + (difh * 60);
			System.out.println(min);
			difm = difh = min = 0;
		}
	}
}