oi preciso fazer um radio relogio que é executado no dos e mostra a hora no dos que se atualiza a cada segundo so sem usar nenhuma classe que tem no java eu sei que tem um metodo que faz isso mas não sei qual que é se aluem puder me ajudar
Relogio java sem interface grafica
7 Respostas
Cria uma thread e usa o método sleep(milisegundos). Usa um contador (ou 3, um para segundos, um para minutos e um para horas) e vai imprimindo o tempo a cada segundo.
sim atai ai eu sei so que eu preciso que ele apague e escreva denovo ou de uma especie de repaint()
mas não posso usar interface grafica e não sei qual o metodo para fazer isso se puder me ajudar agradeço
Atenção: se rodar isto no Eclipse, vai ver que ele escreve cada data e hora em linhas separadas. Se rodar no DOS ele faz o que você quer.
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Relogio {
public static void main(String[] args) {
System.out.println ("Relogio");
System.out.println ("Tecle Ctrl+C para interromper...");
DateFormat df = new SimpleDateFormat ("dd/MM/yyyy HH:mm:ss");
while (true) {
try { Thread.sleep (500); } catch (InterruptedException ex) {}
System.out.print ("\r" + df.format (new Date()));
}
}
}
Eu tinha pensando em algo um pouco mais orientado a objetos, com métodos e tal. Tipo:
public class Relogio {
private int segundos;
private int minutos;
private int horas;
public Relogio ()
{
segundos = 0;
minutos = 0;
horas = 0;
}
public void addSegundo()
{
segundos++;
if (segundos == 60)
{
segundos=0;
this.addMinuto();
}
}
public void addMinuto()
{
minutos++;
if (minutos == 60)
{
minutos=0;
this.addHora();
}
}
public void addHora()
{
horas++;
}
public void comecar()
{
System.out.println("Inicio relógio");
while (true)
{
//dorme um segundo
try {Thread.sleep(1000);}
catch (InterruptedException e) {}
//adiciona um segundo ao contador
this.addSegundo();
//imprime a hora
System.out.println(horas+":"+minutos+":"+segundos);
}
}
public static void main (String[] args)
{
(new Relogio()).comecar();
}
}
Thingol, o sleep não deveria ser de 1000?
E também tinha pensando mais em algo tipo contador de tempo, e não relógio em si mesmo =P
Se você puser “1000” vai ver que de vez em quando o computador vai pular 1 segundo. Eu uso 500 para evitar ficar errado dessa maneira.
Ok, aqui vai uma dica:
Nos terminais de texto, o caractere ‘\r’ normalmente reposiciona o cursor para o começo da linha.
Outra dica:
Chamar System.out.print() não coloca o caractere ‘\n’ no final da linha…
Assim, não é preciso dar “repaint” no terminal de texto, o ‘\r’ vai deixar o cursor no começo da linha e tu pode escrever a hora nele novamente.
Até mais.
e para sair o mesmo codigo em um TextField?