Newsgroup: it.comp.java
Titolo: Estrazione di una cifra

Salve a tutti volevo sapere se esiste un comando per estrarre una cifra da
un numero.
io ho tipo 4321 e voglio estrarre la cifra in posizione 3 che corrisponde al
numero 2. Che devo fare?
Saluti
Jacopo
http://www.jacopo81.it

 numero 2. Che devo fare?
Non so se c'è un metodo già implementato, però potresti implementare
qualcosa tipo:
per prendere la cifra in posizione 3:
4321/100 [10^2] = 43,21 -> parte intera 43
(int) 43/10 = 4 -> resto = 3
Ciao
Niko


Si in teoria potrebbe anche andarmi bene ma mi vado a complicare
notevolmente la vita in quanto io non so quante cifre inserisce l'utente. Ne
potrebbe mettere anche 12. Quindi mi rimane più facile cercare un comando
apposito.
Tipo quello per i caratteri:
Variabile.charAt(0)
Una cosa del genere. Possibile non esista su i numeri per recuperare le
cifre?
Jacopo

 Una cosa del genere.
int n=..;
Character.digit(String.valueOf(n).charAt(i), 10);
dove i e' l'indice della cifra. 
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

 dove i e' l'indice della cifra.
E se volessi ottenere anche la lunghezza del numero tipo 7 (cifre).
Grazie per ora!
Jacopo

> E se volessi ottenere anche la lunghezza del numero tipo 7 (cifre).
considera la stringa ottenuta cosě:
s=""+numero;  (dove n č il numero del quale devi ottenere le cifre)
dopodichč puoi farci tutte le porcherie che vuoi!! ;-)
bye
Fa

"dumah" <fabi...@NOSPAMngweb.it> ha scritto nel messaggio
news:pHeD9.39176$744.1...@news1.tin.it...

No non mi va. Forse sbaglio io sono alle prime armi....
Non posso mescolare numeri e caratteri come dici te. Forse non sono capace
io perň...
Io ho una variabile che č n (che č un numero long) e voglio sapere quante
cifre ha.
Come faccio?
Saluti e grazie per la pazienza...
Jacopo

 quante cifre ha.
Ora non ricordo le specifiche del long, ricordo pero' che e' un
particolare intero.
Guarda quanto segue se ti puo' servire... dovrai modificare qualcosa
per i long negativi.
public class NumCifre {
 
  public static int numCifre(long num) {
    int i = 0; // contatore delle cifre
 
    do {
      num = num / 10;
      i++;		
    }	while(num > 0);
    return i;
  }
 
 
  public static void main(String[] args) {
 
    System.out.println("numero di cifre di " + 159l + ": " + 
      numCifre(159l));	
    System.out.println("numero di cifre di " + 159875l + ": " + 
      numCifre(159159l));	
    System.out.println("numero di cifre di " + 159745663120l + ": " + 
      numCifre(159745663120l));	
  }
}
$ java NumCifre
numero di cifre di 159: 3
numero di cifre di 159875: 6
numero di cifre di 159745663120: 12


il metodo che ti hanno suggerito mi sembra corretto e semplice:
se vuoi il numero di cifre in formato decimale:
long n;
String s = ""+n;
int ncifre = s.length();
pero' magari tu vuoi il numero di cifre in formato esadecimale:
long n;
Long ln = new Long(n);
String s = ln.toHexString();
int ncifre = s.length();
come vedi, il "numero di cifre" ha molto a che fare coi "caratteri".
quindi non e' un reato "mescolarli"
ciao
-- 
Seti@Home Java Applets
http://maruko.cjb.net/

 capace io però...
Non mescoli nulla: l'operatore + e' definito, tra String e int. Una 
scrittura piu' elegante e' 
String.valueOf(n).length() che ti da la lunghezza in caratteri della 
denotazione del numero in base decimale.
Il problema e' che la cosa e' un filo inefficiente. Un modo piu' efficiente 
e' - trattandosi di un intero - esaminare i bit piu' a sinistra, e fare il 
conto di quanto la denotazione sarebbe lunga _senza_ esplicitamente 
computarla. Ma se avevi problemi con quanto prima, stai sul primo metodo, 
che e' facile e intuitivo.


 Io ho una variabile che è n (che è un numero long) e voglio sapere quante


 io perň...
Sei privo di senso pratico, mio caro, č questo il discorso. Spendi il tuo
tempo a risolvere problematiche piů serie, perchč ti assicuro, ce ne sono
quante ne vuoi!
bye
Fa

 Come faccio?
la lunghezza e` pari al valore del logaritmo in base 10 del numero in
questione arrotondato per difetto a cui poi andrai a sommare 1.
Es:
  Math.floor(Math.log(v >= 0 ? v : -v)/Math.log(10)) + 1
Ovviamente il logaritmo non e` definito per valori negativi, dovrai
controllare il segno e poi passare la variabile col segno giusto.
-- 
//\/\ Marco (LM) Lamberto
      Proponi l'informatico che e` in te su 
http://www.siforge.org/
      The Sunny Spot  -  
http://the.sunnyspot.org/