Newsgroup: it.comp.java
Titolo: aggiornare una println(percentuale + "completato!")

Ciao,
sapete se esiste un modo per creare quella stampa a video (da terminale)
che si aggiorna sovrascrivendosi?
Ho bisogno di inserire un indicatore di % tipo
10% completato!
ma non voglio trovarmi con la stampa di tutte le percentuali
5% completato
10% completato
15% completato
...
...
Ho visto questa cosa su vecchi programmi in dos che facevano girare la
barretta |  /  -  \  |
animandola a mo' di rotazione: credo esista anche per java!
grazie gian

 che si aggiorna sovrascrivendosi?
No, non è possibile con Java. Lo standar output è un PrintStream.
Potrebbe essere anche una stampante, non necessariamente un lcd 17"...
Diciamo che infatti per avere un'idea di quello che puoi fare con
System.out puoi pensare ad una stampante (non sovrascrivere, non
tornare 'su' di una riga,...).
ciao
tityrus

Pluncake wrote:

Ciao,
dipende se il terminale è in grado di interpretare i caratteri di 
controllo. Se si basta usare backspace.
Da una finestra dos questo (pessimo :) esempio fa quello che vuoi tu.
Marco
public class Test {
   public static void main(String[] args) {
     for( int i = 0; i < 10; i++) {
       try {
         System.out.print((char) 45);
         Thread.sleep(100);
         System.out.print((char) 8);
         System.out.print((char) 92);
         Thread.sleep(100);
         System.out.print((char) 8);	
         System.out.print((char) 124);
         Thread.sleep(100);
         System.out.print((char) 8);
         System.out.print((char) 47);
	Thread.sleep(100);
         System.out.print((char) 8);
       } catch (InterruptedException ie) {}
     }
   }
}
-- 
replay: remove .duh.spam

tityrus wrote:

Ciao,
in realtà con una stampante puoi sovrascrivere, puoi  tornare 'su' di 
una riga,..
Marco
-- 
replay: remove .duh.spam


Tranquillo, e' facilissimo! E' sufficiente usare il '\r', aka CR (carriage return) che
"riporta il carrello" ad inizio riga: nel caso di un terminale video riporta il cursore ad
inizio riga.
Visto che e' domenica, e lavoro, mi prendo un momento di pausa e ti scrivo l'esempio+
...
Ok, fatto! E' un po' piu' complicato del necessario, ma ti illustra un po' tutto.
public class ProgressDemo
{
    public static void main(String args[])
    {
        final char[] rotors = new char[]{'|', '/', '-', '\\'};
        // simulazione che visualizza il progresso dell'operazione
        for (int i=0; i<=100; i++)
        {
            try {Thread.sleep(100L);} catch (InterruptedException ex) {}
 
            System.out.print('\r');             // torno a inizio riga
            System.out.print(rotors[i%4]);      // stampo carattere rotante
 
            if (i%5 == 0)                       // ogni 5 passi aggiorno la percentuale
            {
                System.out.print(' ');              
                System.out.print(i);                // % completamento
                System.out.print("% completato");   // messaggio 
            }
        }
 
        // alla fine pulisco tutto e stampo un messaggio
        System.out.print("\r");                 // torno a inizio riga
        System.out.print("Finito!");            // stampo il messaggio
        System.out.print("             ");      // pulisco il resto della riga
    }
}
Ciao,
    Bruno.
-- 
| Bruno Bossola 
| A Java Software Engineer :-)
| 
http://digilander.iol.it/bbossola
| Membro del JUG Torino - 
http://www.jugtorino.it

 ha scritto nel messaggio
news:3f7fccd...@news.it.colt.net...
