Para contador, como proceder?

9 respostas
java
Dirley_Santana

Olá á todos, esse é meu primeiro tópico aqui no fórum e a minha duvida é a seguinte

Tenho esse código que tirei daqui do fórum mesmo

int i;
	for(i = 0; i < 86399; i++)
	{	try
		{	//Tenta pausar em 1000 milisegundos.
			Thread.sleep(1000);
		} 
		catch (InterruptedException e)
		{	//Erro na execução.
			System.out.println("ERRO");
		}
		//Mostra a contagem.
		System.out.println("Contando:" + i);

como podem perceber trata-se de uma espécie de contador, vou utiliza-lo com um Jframe criano um botão para inciar o contador e outro para parar, para iniciar eu até sei como fazer não consigo mesmo é saber como parar, e se possivel gostaria de receber na tela o tempo decorrido em horas.

9 Respostas

wallacecampanha

Tenta abrir o repetidor dentro do try

try(CRIA E INICIA A THREAD AQUI) {
      for(int i=0;i<86399;i++){
           if(Thread.sleep(1000)){
           break;
          system.out.println(i);
           }
       }
} catch(InterruptedException e){
   system.out.println("Erro");
   }

Espero ter ajudado

Leopoldo_Nascimento

Fala Dirley! Tudo certo?
Este contador que você diz, você usaria como cronometro? Em resumo, você quer iniciar a contagem, parar e poder reiniciar a contagem de onde você parou? Ou iniciar, parar e pronto?

Dirley_Santana

Parar e pronto, mas preciso que ele tenha o limite de 23:59hs de duração, caso chegue a esse tempo ele encerra sózinho

JulioCesarSF

Algo desse tipo?

import java.util.Scanner;

public class Cronometro implements Runnable{

	private static long inicial = 0;
	//24hrs 86400 * 1000; tempo máximo para executar, se chegar a isso para
	private static long tempo = 5000; 
	private static volatile boolean trabalhando = true;

	public static void main(String[] args) {
		Cronometro cronometro = new Cronometro();
		Cronometro.iniciar();
		new Thread(cronometro).start();
		
		try (Scanner t = new Scanner(System.in)) {
			String parar = t.next();
			if(!parar.equals("")) //digite qlq coisa para parar
				trabalhando = false;
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void iniciar() {
		inicial = System.currentTimeMillis();
	}

	public static void parar() {
		trabalhando = false;
	}

	@Override
	public void run() {	
		while(trabalhando){			
			try {
				if(System.currentTimeMillis() - inicial >= tempo) break;				
				System.out.println(String.valueOf( (System.currentTimeMillis() - inicial) /1000 ));
				Thread.sleep(1000);
			} catch (Exception e) {
				trabalhando = false;
			}			
		}
		System.out.println("Parou");
	}

}
Dirley_Santana

Vou testar e ja passo o resultado

Dirley_Santana

A principio deu varios erros corrigi alguns mas a maioria eu nem sei por onde começar

JulioCesarSF

Quais erros? É só copiar o código que deve funcionar. Agora se você utilizar outros métodos prórpios dentro da thread, vai de sincronizar tudo.

Dirley_Santana

Julio, desculpa a demora para responder e até mesmo agradecer, deu tudo certo, os erros eram aquelas exclamações que aparecem na lateral da IDE, muito obrigado pela ajuda.

raphaeloneves

Que bom que resolveu, amigo.
Não esqueça de marcar a resposta do colega como solução do problema. Assim, outros usuários poderão desfrutar de maneira mais eficiente da resposta.
Abraço.

Criado 2 de abril de 2017
Ultima resposta 14 de jun. de 2017
Respostas 9
Participantes 5