Go Back   UseSrv Message Forum > Italiano > Computers - Italiano > Java - Italiano
 

 
Thread Tools Display Modes
  #1  
Old 07-15-2008
Pluncake
Guest
 
Posts: n/a
Default 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


  #2  
Old 07-15-2008
tityrus
Guest
 
Posts: n/a
Default Re: aggiornare una println(percentuale + "completato!")

> sapete se esiste un modo per creare quella stampa a video (da terminale)
> 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
  #3  
Old 07-15-2008
cthulhu
Guest
 
Posts: n/a
Default Re: aggiornare una println(percentuale + "completato!")

Pluncake wrote:

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


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

  #4  
Old 07-15-2008
cthulhu
Guest
 
Posts: n/a
Default Re: aggiornare una println(percentuale + "completato!")

tityrus wrote:

>>sapete se esiste un modo per creare quella stampa a video (da terminale)
>>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


Ciao,

in realtà con una stampante puoi sovrascrivere, puoi tornare 'su' di
una riga,..

Marco

--

replay: remove .duh.spam

  #5  
Old 07-15-2008
Bruno Bossola
Guest
 
Posts: n/a
Default Re: aggiornare una println(percentuale + "completato!")

>sapete se esiste un modo per creare quella stampa a video (da terminale)
>che si aggiorna sovrascrivendosi?
>

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


Thread Tools
Display Modes

Forum Jump


All times are GMT. The time now is 01:03 AM.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0