Calculo com horas

2 respostas
F

Boa tarde.

Eu estou com dificuldade em fazer um programinha. Seria como um cronometro, a pessoa coloca quanto tempo quer praticar algo e quanto tempo que descansar. Consegui converter a hora do sistema, mas o programa esta entrando em loop infinito.
Alguém pode me ajudar?

Obrigado

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.logging.SimpleFormatter;

import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;
public Tela() {
    initComponents();
}


public void converteHora() {

    boolean aux = false;

    while (aux == false) {
        long miliSegundos = System.currentTimeMillis() - 10800000;
        
        long totalSegundos = miliSegundos / 1000;
        long segundoAtual = totalSegundos % 60;

        long totalMinutos = totalSegundos / 60;
        long minutoAtual = totalMinutos % 60;

        long totalHora = totalMinutos / 60;
        long horaAtual = totalHora % 24;

        String hora = Long.toString(horaAtual);
        String min = Long.toString(minutoAtual);
        String sec = Long.toString(segundoAtual);

        lblContador.setText(hora + " : " + min + " : " + sec);
        
        System.out.println(aux);
        if (totalMinutos == 16) {
            aux = true;
        }
    }
}

private void btnComecarActionPerformed(java.awt.event.ActionEvent evt) {                                           
    // clicar no lblComecar mostra o tempo correndo
    converteHora();
}                                          

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
       try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(Tela.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(Tela.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(Tela.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(Tela.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Tela().setVisible(true);
        }
    });
}
                
private javax.swing.JButton btnComecar;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JTextField jTextField1;
private javax.swing.JLabel lblContador;
private javax.swing.JTextField tempoDescansar;
private javax.swing.JTextField tempoEstudar;

}

2 Respostas

igomes

Primeiro, nunca compare booleanos com booleanos, vc faz mais de uma comparação pra obter o mesmo resultado.
while (!aux) {
}

Segundo, que tal trocar essa implementação por um código bem mais fácil de se ler ?
Joda - Time
Date dataHoje = Calendar.getInstance().getTime();
Date dataSimulada = new GregorianCalendar(2016, 2, 15, 14, 30).getTime();
DateTime dateTime = new DateTime(dataHoje);
DateTime dateTime2 = new DateTime(dataSimulada);
int minutes = Minutes.minutesBetween(dateTime2, dateTime).getMinutes();
System.out.println("DIFERENCA EM MINUTOS: "+minutes);

Agora porque ele não entra na sua condicional, vc já viu o valor da sua variavel totalMinutos ?
Provavelmente não, por isso ta nesse loop, ele nunca entra naquele if.

F

Bom dia.

Obrigado por responder.
Na verdade quando eu tiro o while e o if funciona normalmente.
Ele mostra na tela a hora exata, e sempre que eu clico no botão ele atualiza para o hora que esta no relógio do Windows. O problema é quado eu coloca a repetição e a condição, ai ele não esta fazendo a verificação no if.
Esse paramento de comparação no if eu estou colocando na mão, vejo o minuto que esta no relógio e coloco na mão somente para teste.

Criado 15 de março de 2016
Ultima resposta 16 de mar. de 2016
Respostas 2
Participantes 2