Fórum Cronômetro com contagem regressiva em JAVA #568318

13/06/2014

0

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

Responder

Posts

13/06/2014

André Pereira

[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.
Responder

Gostei + 0

13/06/2014

Evandro Rocha

[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]
Responder

Gostei + 0

14/06/2014

André Pereira

[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.
1
2
3
4
5
6
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);
Responder

Gostei + 0

16/06/2014

Evandro Rocha

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.
Responder

Gostei + 0

16/06/2014

Evandro Rocha

[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.
Responder

Gostei + 0

16/06/2014

Evandro Rocha

[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; } } } } }
Responder

Gostei + 0

16/06/2014

André Pereira

[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.
1
2
min = min * 60;
segundos = min + seg;
Depois basta seguir o código que lhe passei. E estará pronto.
Responder

Gostei + 0

16/06/2014

Evandro Rocha

[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.
1
2
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.
Responder

Gostei + 0

18/06/2014

André Pereira

[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.
1
2
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.
Responder

Gostei + 0

20/06/2014

Evandro Rocha

[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.
1
2
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.
Responder

Gostei + 0

25/06/2014

Evandro Rocha

[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.
1
2
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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]
Responder

Gostei + 0

25/06/2014

André Pereira

[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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar