Cronômetro com contagem regressiva em JAVA

Java

13/06/2014

Prezados, estou precisando criar um método que recebe dois valores referentes a minutos e segundos e faz a cronometragem regressiva. Alguém poderia me ajudar?
Evandro Rocha

Evandro Rocha

Curtidas 0

Respostas

André Pereira

André Pereira

13/06/2014

[quote="evandro_ti"]Prezados, estou precisando criar um método que recebe dois valores referentes a minutos e segundos e faz a cronometragem regressiva. Alguém poderia me ajudar?
Você já tentou alguma coisa? Poste o que você já fez, ficara mais fácil de lhe ajudarmos.
GOSTEI 0
Evandro Rocha

Evandro Rocha

13/06/2014

[quote="D3z40"][quote="evandro_ti"]Prezados, estou precisando criar um método que recebe dois valores referentes a minutos e segundos e faz a cronometragem regressiva. Alguém poderia me ajudar?
Você já tentou alguma coisa? Poste o que você já fez, ficara mais fácil de lhe ajudarmos.
Tentei o codigo abaixo, porém preciso que sejam com minutos e segundos , e esse codigo so trata segundos. public void cronometrar(int min,int seg) { try { for (int i = seg; i > 0; segundos--) { System.out.print(min +":"+segundos+"\n"); Thread.sleep(1000); // 1 segundo } System.out.println("Sai da Fila"); } catch (InterruptedException e) { System.out.println("Cronometragem interrompida"); } } [color=red][/color]
GOSTEI 0
André Pereira

André Pereira

13/06/2014

[quote="evandro_ti"][quote="D3z40"][quote="evandro_ti"]Prezados, estou precisando criar um método que recebe dois valores referentes a minutos e segundos e faz a cronometragem regressiva. Alguém poderia me ajudar?
Você já tentou alguma coisa? Poste o que você já fez, ficara mais fácil de lhe ajudarmos.
Tentei o codigo abaixo, porém preciso que sejam com minutos e segundos , e esse codigo so trata segundos. public void cronometrar(int min,int seg) { try { for (int i = seg; i > 0; segundos--) { System.out.print(min +":"+segundos+"\n"); Thread.sleep(1000); // 1 segundo } System.out.println("Sai da Fila"); } catch (InterruptedException e) { System.out.println("Cronometragem interrompida"); } } [color=red][/color] Você não precisa passar os minutos, apenas segundos, depois basta converter... Vou lhe mostrar o algoritmo da fórmula, como exemplo irei passar como parâmetro 4.000 segundos (Quatro mil segundos), depois basta passar para seu código fonte. Peque sempre apenas a parte inteira. [b] 4000 //Parâmetro 4000 / 3600 = 1 //Para descobrir o total de horas. (4000 - (1 * 3600)) / 60 = 6 //Para descobrir o total de minutos. (4000 - (1 * 3600)) - (6 * 60) = 40 //Para descobrir o total de segundos. [/b] Agora em Java, usando variáveis.
totalSegundos; //Parâmetro
horas = totalSegundos / 3600; //Para descobrir o total de horas.
minutos = (totalSegundos - (horas * 3600)) / 60; //Para descobrir o total de minutos.
segundos = (totalSegundos - (horas * 3600)) - (minutos * 60); //Para descobrir o total de segundos.

System.out.printf("%02d:%02d:%02d", horas, minutos, segundos);
GOSTEI 0
Evandro Rocha

Evandro Rocha

13/06/2014

Na verdade eu faria a leitura de um arquivo txt, onde teriam separadas duas strings, uma referente a minutos e outra a segundos e através dessas duas strings eu preciso cronometrar regressivamente esse tempo. Não estou conseguindo abstrair esse código, consigo trabalhar normalmente com os segundos regressivamente, porém não estou conseguindo tratar os minutos.
GOSTEI 0
Evandro Rocha

Evandro Rocha

13/06/2014

[quote="evandro_ti"]Na verdade eu faria a leitura de um arquivo txt, onde teriam separadas duas strings, uma referente a minutos e outra a segundos e através dessas duas strings eu preciso cronometrar regressivamente esse tempo. Não estou conseguindo abstrair esse código, consigo trabalhar normalmente com os segundos regressivamente, porém não estou conseguindo tratar os minutos.
Quanto zera os segundos, o programa simplesmente sai do laço, se eu receber por parametro "10","25", quando ele chega em 10:00, sai do laço.
GOSTEI 0
Evandro Rocha

Evandro Rocha

13/06/2014

[quote="evandro_ti"][quote="evandro_ti"]Na verdade eu faria a leitura de um arquivo txt, onde teriam separadas duas strings, uma referente a minutos e outra a segundos e através dessas duas strings eu preciso cronometrar regressivamente esse tempo. Não estou conseguindo abstrair esse código, consigo trabalhar normalmente com os segundos regressivamente, porém não estou conseguindo tratar os minutos.
Quanto zera os segundos, o programa simplesmente sai do laço, se eu receber por parametro "10","25", quando ele chega em 10:00, sai do laço.
public class Cronometro { public void cronometrar(String m, String s ) { int totalSegundos = Integer.parseInt(s); int min = Integer.parseInt(m); for (int i = totalSegundos; i>0; i--){ //tempo recebido em segundos totalSegundos --; int horas = totalSegundos / 3600; //Para descobrir o total de horas. int minutos = (totalSegundos - (horas * 3600)) / 60; //Para descobrir o total de minutos. int segundos = (totalSegundos - (horas * 3600)) - (minutos * 60); //Para descobrir o total de segundos. System.out.printf("%02d:%02d",min, segundos); System.out.println(""); if(totalSegundos == 0){ totalSegundos = 59; min--; if(min == 0 && totalSegundos ==0){ break; } } } } }
GOSTEI 0
André Pereira

André Pereira

13/06/2014

[quote="evandro_ti"][quote="evandro_ti"][quote="evandro_ti"]Na verdade eu faria a leitura de um arquivo txt, onde teriam separadas duas strings, uma referente a minutos e outra a segundos e através dessas duas strings eu preciso cronometrar regressivamente esse tempo. Não estou conseguindo abstrair esse código, consigo trabalhar normalmente com os segundos regressivamente, porém não estou conseguindo tratar os minutos.
Quanto zera os segundos, o programa simplesmente sai do laço, se eu receber por parametro "10","25", quando ele chega em 10:00, sai do laço.
public class Cronometro { public void cronometrar(String m, String s ) { int totalSegundos = Integer.parseInt(s); int min = Integer.parseInt(m); for (int i = totalSegundos; i>0; i--){ //tempo recebido em segundos totalSegundos --; int horas = totalSegundos / 3600; //Para descobrir o total de horas. int minutos = (totalSegundos - (horas * 3600)) / 60; //Para descobrir o total de minutos. int segundos = (totalSegundos - (horas * 3600)) - (minutos * 60); //Para descobrir o total de segundos. System.out.printf("%02d:%02d",min, segundos); System.out.println(""); if(totalSegundos == 0){ totalSegundos = 59; min--; if(min == 0 && totalSegundos ==0){ break; } } } } } Esse é o problema de trabalhar com segundos, minutos e horas em variáveis diferentes, fica muito mais confuso o código e difícil de manter, por isso que lhe passei aquela fora de transformar tudo em segundos e ir tratando segundo a segundo, para que fosse decrementado do total de segundos e calcular e formatar para exibir o tempo restante para que o usuário possa visualizar. Para transformar tudo em segundos basta você multiplicar o total de minutos por 60 (Total de segundos em 1 minuto), e somar com os segundos.
min = min * 60;
segundos = min + seg;
Depois basta seguir o código que lhe passei. E estará pronto.
GOSTEI 0
Evandro Rocha

Evandro Rocha

13/06/2014

[quote="D3z40"][quote="evandro_ti"][quote="evandro_ti"][quote="evandro_ti"]Na verdade eu faria a leitura de um arquivo txt, onde teriam separadas duas strings, uma referente a minutos e outra a segundos e através dessas duas strings eu preciso cronometrar regressivamente esse tempo. Não estou conseguindo abstrair esse código, consigo trabalhar normalmente com os segundos regressivamente, porém não estou conseguindo tratar os minutos.
Quanto zera os segundos, o programa simplesmente sai do laço, se eu receber por parametro "10","25", quando ele chega em 10:00, sai do laço.
public class Cronometro { public void cronometrar(String m, String s ) { int totalSegundos = Integer.parseInt(s); int min = Integer.parseInt(m); for (int i = totalSegundos; i>0; i--){ //tempo recebido em segundos totalSegundos --; int horas = totalSegundos / 3600; //Para descobrir o total de horas. int minutos = (totalSegundos - (horas * 3600)) / 60; //Para descobrir o total de minutos. int segundos = (totalSegundos - (horas * 3600)) - (minutos * 60); //Para descobrir o total de segundos. System.out.printf("%02d:%02d",min, segundos); System.out.println(""); if(totalSegundos == 0){ totalSegundos = 59; min--; if(min == 0 && totalSegundos ==0){ break; } } } } } Esse é o problema de trabalhar com segundos, minutos e horas em variáveis diferentes, fica muito mais confuso o código e difícil de manter, por isso que lhe passei aquela fora de transformar tudo em segundos e ir tratando segundo a segundo, para que fosse decrementado do total de segundos e calcular e formatar para exibir o tempo restante para que o usuário possa visualizar. Para transformar tudo em segundos basta você multiplicar o total de minutos por 60 (Total de segundos em 1 minuto), e somar com os segundos.
min = min * 60;
segundos = min + seg;
Depois basta seguir o código que lhe passei. E estará pronto. Muito Obrigado amigo, funcionou perfeitamente. Adaptei ao código.
GOSTEI 0
André Pereira

André Pereira

13/06/2014

[quote="evandro_ti"][quote="D3z40"][quote="evandro_ti"][quote="evandro_ti"][quote="evandro_ti"]Na verdade eu faria a leitura de um arquivo txt, onde teriam separadas duas strings, uma referente a minutos e outra a segundos e através dessas duas strings eu preciso cronometrar regressivamente esse tempo. Não estou conseguindo abstrair esse código, consigo trabalhar normalmente com os segundos regressivamente, porém não estou conseguindo tratar os minutos.
Quanto zera os segundos, o programa simplesmente sai do laço, se eu receber por parametro "10","25", quando ele chega em 10:00, sai do laço.
public class Cronometro { public void cronometrar(String m, String s ) { int totalSegundos = Integer.parseInt(s); int min = Integer.parseInt(m); for (int i = totalSegundos; i>0; i--){ //tempo recebido em segundos totalSegundos --; int horas = totalSegundos / 3600; //Para descobrir o total de horas. int minutos = (totalSegundos - (horas * 3600)) / 60; //Para descobrir o total de minutos. int segundos = (totalSegundos - (horas * 3600)) - (minutos * 60); //Para descobrir o total de segundos. System.out.printf("%02d:%02d",min, segundos); System.out.println(""); if(totalSegundos == 0){ totalSegundos = 59; min--; if(min == 0 && totalSegundos ==0){ break; } } } } } Esse é o problema de trabalhar com segundos, minutos e horas em variáveis diferentes, fica muito mais confuso o código e difícil de manter, por isso que lhe passei aquela fora de transformar tudo em segundos e ir tratando segundo a segundo, para que fosse decrementado do total de segundos e calcular e formatar para exibir o tempo restante para que o usuário possa visualizar. Para transformar tudo em segundos basta você multiplicar o total de minutos por 60 (Total de segundos em 1 minuto), e somar com os segundos.
min = min * 60;
segundos = min + seg;
Depois basta seguir o código que lhe passei. E estará pronto. Muito Obrigado amigo, funcionou perfeitamente. Adaptei ao código. Valeu o retorno, mas seria bom você postar o código final para outros que tenham a mesma dúvida.
GOSTEI 0
Evandro Rocha

Evandro Rocha

13/06/2014

[quote="D3z40"][quote="evandro_ti"][quote="D3z40"][quote="evandro_ti"][quote="evandro_ti"][quote="evandro_ti"]Na verdade eu faria a leitura de um arquivo txt, onde teriam separadas duas strings, uma referente a minutos e outra a segundos e através dessas duas strings eu preciso cronometrar regressivamente esse tempo. Não estou conseguindo abstrair esse código, consigo trabalhar normalmente com os segundos regressivamente, porém não estou conseguindo tratar os minutos.
Quanto zera os segundos, o programa simplesmente sai do laço, se eu receber por parametro "10","25", quando ele chega em 10:00, sai do laço.
public class Cronometro { public void cronometrar(String m, String s ) { int totalSegundos = Integer.parseInt(s); int min = Integer.parseInt(m); for (int i = totalSegundos; i>0; i--){ //tempo recebido em segundos totalSegundos --; int horas = totalSegundos / 3600; //Para descobrir o total de horas. int minutos = (totalSegundos - (horas * 3600)) / 60; //Para descobrir o total de minutos. int segundos = (totalSegundos - (horas * 3600)) - (minutos * 60); //Para descobrir o total de segundos. System.out.printf("%02d:%02d",min, segundos); System.out.println(""); if(totalSegundos == 0){ totalSegundos = 59; min--; if(min == 0 && totalSegundos ==0){ break; } } } } } Esse é o problema de trabalhar com segundos, minutos e horas em variáveis diferentes, fica muito mais confuso o código e difícil de manter, por isso que lhe passei aquela fora de transformar tudo em segundos e ir tratando segundo a segundo, para que fosse decrementado do total de segundos e calcular e formatar para exibir o tempo restante para que o usuário possa visualizar. Para transformar tudo em segundos basta você multiplicar o total de minutos por 60 (Total de segundos em 1 minuto), e somar com os segundos.
min = min * 60;
segundos = min + seg;
Depois basta seguir o código que lhe passei. E estará pronto. Muito Obrigado amigo, funcionou perfeitamente. Adaptei ao código. Valeu o retorno, mas seria bom você postar o código final para outros que tenham a mesma dúvida. Com certeza, estarei postando em breve.
GOSTEI 0
Evandro Rocha

Evandro Rocha

13/06/2014

[quote="evandro_ti"][quote="D3z40"][quote="evandro_ti"][quote="D3z40"][quote="evandro_ti"][quote="evandro_ti"][quote="evandro_ti"]Na verdade eu faria a leitura de um arquivo txt, onde teriam separadas duas strings, uma referente a minutos e outra a segundos e através dessas duas strings eu preciso cronometrar regressivamente esse tempo. Não estou conseguindo abstrair esse código, consigo trabalhar normalmente com os segundos regressivamente, porém não estou conseguindo tratar os minutos.
Quanto zera os segundos, o programa simplesmente sai do laço, se eu receber por parametro "10","25", quando ele chega em 10:00, sai do laço.
public class Cronometro { public void cronometrar(String m, String s ) { int totalSegundos = Integer.parseInt(s); int min = Integer.parseInt(m); for (int i = totalSegundos; i>0; i--){ //tempo recebido em segundos totalSegundos --; int horas = totalSegundos / 3600; //Para descobrir o total de horas. int minutos = (totalSegundos - (horas * 3600)) / 60; //Para descobrir o total de minutos. int segundos = (totalSegundos - (horas * 3600)) - (minutos * 60); //Para descobrir o total de segundos. System.out.printf("%02d:%02d",min, segundos); System.out.println(""); if(totalSegundos == 0){ totalSegundos = 59; min--; if(min == 0 && totalSegundos ==0){ break; } } } } } Esse é o problema de trabalhar com segundos, minutos e horas em variáveis diferentes, fica muito mais confuso o código e difícil de manter, por isso que lhe passei aquela fora de transformar tudo em segundos e ir tratando segundo a segundo, para que fosse decrementado do total de segundos e calcular e formatar para exibir o tempo restante para que o usuário possa visualizar. Para transformar tudo em segundos basta você multiplicar o total de minutos por 60 (Total de segundos em 1 minuto), e somar com os segundos.
min = min * 60;
segundos = min + seg;
Depois basta seguir o código que lhe passei. E estará pronto. Muito Obrigado amigo, funcionou perfeitamente. Adaptei ao código. Valeu o retorno, mas seria bom você postar o código final para outros que tenham a mesma dúvida. Com certeza, estarei postando em breve. Prezados, desculpem a demora, segue abaixo o código:
 public void cronometrar(String m, String s) throws InterruptedException {

        if (m == null || s == null) {
            throw new InterruptedException("Você deve informar ambos os parâmetros! ");
        }

        int totalSegundos = Integer.parseInt(s);
        int min = Integer.parseInt(m);
        min = min * 60;  //
        totalSegundos = min + totalSegundos;

        for (int i = totalSegundos; i > 0; i--) { //tempo recebido em segundos 

            totalSegundos--;

            int horas = totalSegundos / 3600; //Para descobrir o total de horas. 
            int minutos = (totalSegundos - (horas * 3600)) / 60; //Para descobrir o total de minutos. 
            int segundos = (totalSegundos - (horas * 3600)) - (minutos * 60); //Para descobrir o total de segundos. 

            System.out.printf("%02d:%02d:%02d", horas, minutos, segundos);
            System.out.println("");
            Thread.sleep(1000); // 1 segundo 
            if (horas == 0 && minutos == 0 && segundos == 0) {
                break;
            }

        }

    }
[b][color=darkgreen]Post editado com as [url=http://javafree.uol.com.br/topic-870315-Tag-CODE-do-forum.html]Tag CODE[/url] por [url=http://javafree.uol.com.br/viewprofile.jbb?u=37650]D3z40[/url][/color][/b] [color=green]Por favor, sempre edite os códigos de seus post's com [url=http://javafree.uol.com.br/topic-870315-Tag-CODE-do-forum.html]Tag CODE[/url], verifique o link.[/color]
GOSTEI 0
André Pereira

André Pereira

13/06/2014

[quote="evandro_ti"][quote="evandro_ti"][quote="D3z40"][quote="evandro_ti"][quote="D3z40"][quote="evandro_ti"][quote="evandro_ti"][quote="evandro_ti"]Na verdade ..s.
Quanto ...
.. Esse é o ... Muito Obrigado... Valeu o ... Com certeza,... Prezados, desculpem a demora, segue abaixo o código:
 public void cronometrar(String m, String s) throws InterruptedException {

        if (m == null || s == null) {
            throw new InterruptedException("Você deve informar ambos os parâmetros! ");
        }

        int totalSegundos = Integer.parseInt(s);
        int min = Integer.parseInt(m);
        min = min * 60;  //
        totalSegundos = min + totalSegundos;

        for (int i = totalSegundos; i > 0; i--) { //tempo recebido em segundos 

            totalSegundos--;

            int horas = totalSegundos / 3600; //Para descobrir o total de horas. 
            int minutos = (totalSegundos - (horas * 3600)) / 60; //Para descobrir o total de minutos. 
            int segundos = (totalSegundos - (horas * 3600)) - (minutos * 60); //Para descobrir o total de segundos. 

            System.out.printf("%02d:%02d:%02d", horas, minutos, segundos);
            System.out.println("");
            Thread.sleep(1000); // 1 segundo 
            if (horas == 0 && minutos == 0 && segundos == 0) {
                break;
            }

        }

    }
[b][color=darkgreen]Post editado com as [url=http://javafree.uol.com.br/topic-870315-Tag-CODE-do-forum.html]Tag CODE[/url] por [url=http://javafree.uol.com.br/viewprofile.jbb?u=37650]D3z40[/url][/color][/b] [color=green]Por favor, sempre edite os códigos de seus post's com [url=http://javafree.uol.com.br/topic-870315-Tag-CODE-do-forum.html]Tag CODE[/url], verifique o link.[/color]
É isso mesmo, ficou show de bola, assim que chegar em casa postarei uma aplicação que faz uso de Threads para cronometrar, ainda tem algumas coisas que gostaria de fazer, como por exemplo, registrar em Table as parciais, mas ficou legal e servirá como parâmetro de aprendizado.
GOSTEI 0
POSTAR