ciao a tutti, oggi ho finito di scrivere il mio primo programmino in java, niente di eccezionale un semplice orologio binario.
Dato che sto studiando ora un po di java e sono proprio agli inizi vengo a chiedere aiuto qui per finire di compilarlo.
Il programma funziona, ora vorrei che questo orologio incrementasse automaticamente senza dover ri-mandare in esecuzione il programma.
Per farlo l'ho messo dentro un thread ma ovviamente il programma non fa un refresh della schermata ma ristampa tutto il listato nuovamente.
Come posso fare per farlo refreshare?
vi metto un pezzetto di codice per vedere come l ho organizzato
codice:
import java.lang.Math.*;
import java.util.*;
public class BinaryClock{
public static void main (String [] args){
int [] arrH = new int [13];
int [] arrDM = new int [6];
int [] arrUM = new int [10];
int [] arrDS = new int [6];
int [] arrUS = new int [10];
int [][] oreBin = new int [13][6];
int [][] decMin = new int [6][6];
int [][] uniMin = new int [10][6];
int [][] decSec = new int [6][6];
int [][] uniSec = new int [10][6];
//legge l'orario di sistema
Calendar cal = new GregorianCalendar();
//vengono assegnate le variabili
int ore = Integer.valueOf(cal.get(Calendar.HOUR));
int minuti = Integer.valueOf(cal.get(Calendar.MINUTE));
int secondi = Integer.valueOf(cal.get(Calendar.SECOND));
//Stampa l'orario in fomrmato standard
System.out.println("- "+ore+":"+minuti+":"+secondi+" -");
System.out.println("");
//AM-PM
//prende l'ora in formato 24 e fa il controllo
int w = Integer.valueOf(cal.get(Calendar.HOUR_OF_DAY));
if (w>12){
System.out.println("1"); //se PM mette 1
System.out.println("");
} else {
System.out.println("0"); //se AM mette 0
System.out.println("");
}
//INIZIO CICLO 12H
//converte le 12 ore in binario
for (int x = 1; x<arrH.length; x++){
int val = x;
arrH[x] = val;
double j = val;
//conversione in binario
for (int i = 0; i<6; i++){
if ((j%2) == 0){
oreBin[x][i] = 0;
} else {
oreBin[x][i] = 1;
}
j = Math.floor(j/2);
}
//inverte l'array
for (int u = 0; u<oreBin.length; u++){
for (int z = 0, b=oreBin[u].length-1; z<b; z++, b--){
int tmp = oreBin[u][z];
oreBin[u][z] = oreBin[u][b];
oreBin[u][b] = tmp;
}
}
//stampa tutti i numeri del ciclo in binario
for (int i = 0 ; i<oreBin[x].length; i++){
//corregge il bug delle 12-0 poratndo le ore12 da 0 a 12
if (ore == 0){
ore = 12;
}
//controlla se il valore convertito è uguale all ora corrente
if (val == ore){
//vede quanti numeri dell array deve visualizzare in base alle decine di minuti
//controlla se i minuti sono maggiori di 10 per prendere le decine
if (minuti>=10) {
double decMinuti = Math.floor(minuti/10);
int decine = (int) decMinuti; //il valore intero di decMinuti
int u = decine; //assegna a i il valore parziale
for (int p = 0; p<u && p<6; p++ ) {
System.out.print(oreBin[x][p]);
}
} else {
int decine = minuti;
int u = decine; //assegna a i il valore parziale
for (int p = 0; p<u && p<6; p++ ) {
System.out.print(oreBin[x][p]);
}
} break ;
}
System.out.print(oreBin[x][i]);
}
System.out.println("");
}
System.out.println("");
//INIZIO CICLO DECINE MINUTI
(..continua..)
Grazie Claudio