Problemas com horas

Pessoal seguinte… preciso fazer um programa rodar até que… a entrada seja 0 0 0 0.
pois… o programa irá dar a diferença de minutos que a pessoa irá dormir.
Ex. 5 10 5 20
o cara vai dormir 10 min.
5 10 6 10
o cara vai dormir 60 min.
blz… mas como ficaria o while?
Não estou conseguindo

while ((h1 = scan.nextInt()) != 0 && (m1 = scan.nextInt()) != 0 && (h2 = scan.nextInt()) != 0 && (m2 = scan.nextInt()) != 0)

Pois quando entra algum 0
por exemplo
5 10 0 20
ja era ele trava. como fazer para ele receber tudo 0 parar de funcionar e quando ele receber de 3 0 para baixo ele continuar funcionando?

Eu faria algo assim:

while(true){
            h1 = scan.nextInt();
            m1 = scan.nextInt();
            h2 = scan.nextInt();
            m2 = scan.nextInt();
            
            if((h1==0)&&(h2==0)&&(m1==0)&&(m2==0))
               break;
            else
                continuar();            
        }

Se bem que nao entendi para que vc precisa por isso tudo dentro de um loop

é para um teste do site do spoj, é com testes de caixa preta. e precisa estar em loop