Newsgroup: it.comp.java
Titolo: [niubbo] Tenersi gli "0" .

Vi prego di aiutarmi, ho un problema che mi blocca un intero progetto.
Sembrerà un cazzata...ma...
Ho bisogno di tenermi gli zeri che possono capitare all'inizio di una cifra
memorizzata in un 'long'.
Un esempio per capire meglio:
long numero1, numero2;
numero1 = 003
numero2 = 004
numero3 = numero1 + numero2
se li sommo ho bisogno che il risultato sia 007 e *non* 7 !! :_(
e, se stampato eventualmente a video mi dia, appunto, 007 (non mi serve la
stampa a video, è solo per far capire :-))
Altro ostacolo è che non posso passare per una stringa, o considerare cifra
per cifra, ma possibilmente il numero nella sua interezza!
Spero vivamente in un aiuto, o sono fregato :_(
Mi scuso con l' NG per la supplica, e ringrazio anticipamente.
- Simone -

 serve la stampa a video, è solo per far capire :-))
007 è solo una rappresentazione. Quando ti serve mostrarlo a video è 
sufficiente che tu lo formatti in quel modo.
java.text.DecimalFormat è il tuo amico...


Ti specifico maggiormente il mio problema:
Se avessi 1900 e lo divido per 1000  ,  potrei sfruttare il resto per
tenermi 900 e metterlo in una cella di un array; mentre il risultato (dunque
1) nella cella precedente. Se poi volessi scorrere l' array e stamparne a
video le due posizioni, il numero mi rimarebbe "intatto" (ossia stampo
1900).
Ecco il problema:  se invece ho 1001 e divido  per 1000 , come per sopra, il
resto della divisione andrebbe in una cella dell'array (001 me lo segna come
1);
mentre il risultato (dunque 1) in un altra.  Ed ora se stampo a video le due
celle adiacenti, cosa uscirebbe fuori??:    11
dunque il mio numero non rimane intatto.
Questo problema non è dato solo dalla stampa a video, ma ,a me, interessa
al numero diviso nelle due celle dell'array,  poterci sommare, ad esempio,
un altro numero.
Ricapitolando:
Esempio 1:
1300 / 1000 =  1 con resto 300
array[0]=1
array[1]=300
Se adesso aggiungo 500 a array[1] , va tutto bene. Visto che poi stampo le
due celle e tiro fuori 1 800
Esempio 2:
vettore[0] = 1001 / 1000
vettore[1] = qui ci vorrei il resto rappresentato proprio come 001
Poi vorrei  addizionare. per esempio, 10 ed avere dentro vettore[1] il
valore 011 (ossia 001 + 10). Ma, a questo punto, le due celle adiacenti mi
rappresentano invece di 1011 ,  il risultato 111 .. che non va assolutamente
bene!!!!
Insomma mi servono quei cribbio di zeri all'inizio del numero "parziale"
(ossia una volta spezzettato).
Grazie dell' interessamento!!! :-)
- Simone -
P.s. Forse ho fatto qualche casino con il reply , sorry.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Simone wrote:
| Insomma mi servono quei cribbio di zeri all'inizio del numero "parziale"
Ci sono *infiniti* zeri davanti al tuo numero, non ti preoccupare.
Il tuo problema è *solo* nella formattazione a video...
Lapo
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAkAJs2EACgkQaJiCLMjyUvtBRACg2cS3qt4k3Eh6U4a3REmtqW5a
iU8AoKWelepefGBh7p92Zix2SdqBDvpf
=J2IA
-----END PGP SIGNATURE-----

 sommare, ad esempio, un altro numero.
Torno a dire: un numero è un numero, gli zeri a sinistra fanno parte di una 
delle sue rappresentazioni. Te ne occupi quando stampi la griglia.
import java.text.*;
[...]
DecimalFormat formattatore = new DecimalFormat("000");
System.out.println(formattatore.format(numero1));
System.out.println(formattatore.format(numero2));
...

 Lapo
Questo serviva anche a me. Purtroppo non ho ben capito. Ho dato un occhiata
alle API, ma non ho individuato il metodo che fa al caso nostro. Potreste
farmi un piccolo main di esempio?
In caso, Grazie!

 nostro. 
http://java.sun.com/j2se/1.4.2/docs/api/java/text/DecimalFormat.html

Come ha gia' detto Mr Vega,
un conto e' il numero, un conto e' la sua rappresentazione.
Es: 22 puo' essere rappresentato in vari modi
22 in base 10 (decimale
0000022 sempre in base 10
26 in base 8 (ottale)
16 in base16 (esadecimale o hex per gli amici)
10110 in binario.
Da quanto ho capito tu vuoi incanalare un numero, in un array di caratteri,
per poterli stampare cifra per cifra.
1) crea il tuo array inizializzando tutti i caratteri a '0' (e non a 0!!!)
2)utilizzi gli operatori / (divisione) e % (resto) per ottenere le singole
cifre.. esempio
1728
int resto;
per ottenere la prima cifra (8)
1728 %10;
per ottenere la seconda cifra (2)
1728 % 100 -8
per ottenere la terza(7)
1728 % 1000 - 728
ogni volta che trovi una cifra la devi usare per calcolare la successiva..
Impegnati a cercare un algoritmo generale per questo sistema..
Valerio
PS:
progetto della DiIanni ?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/