Newsgroup: it.comp.java
Titolo: ricezione numeri solo da 10 cifre

Ciao sono di nuovo io,  non riesco a far in modo che mi riceva solo numeri 
da 10 cifre io avevo provato così:
 if (numero<1000000000L || numero>=10000000000L)
                throw new IllegalArgumentException();
else //tralascio
Solo ke mi funziona a metà, cioè mi riceve numeri si da 10 cifre ma solo se 
cominciano con 1 cioè se metto un num tipo 
3214569870
 mi dice che un errore.
ho provato a fare:
 if (numero<1000000000L || numero>9999999999)
ma è la stessa cosa
qualcuno che mi possa essere d'aiuto?
Albe 

 10000000000
<   999999999
altrimenti non ho capito cosa chiedi..
-- 
www.iuz-lab.info


Niente non va lo stesso,
io voglio che da tastiere vengano ricevuti solo numeri da 10 cifre tipo
questo : 
5203211450
quando inserisco il numero se il numero da me inserito ha meno di 10 cifre
mi richiede di riscriverlo, lo stesso se ha più di 10 cifre. E questo della
richiesta in caso di errore l'ho fatta.
Il problema è che non so il motivo ma non riesco a far in modo che mi
accetti tutti i numeri da 10 cifre. Ovvero ci son riuscito solo in parte il
prog mi accetta solo numeri da 10 cifre ma se tipo metto un numero superiore
al 1999999999 mi dice che è errore.
Per farmi capire meglio se volete vi lascio il codice:
import java.io.*;
import java.util.*;
public class Project
private static long[] numtel;
public static void main(String[] args) throws IOException
  {
      int i = 0;
      int j = 0;
      double a = 0;
      Scanner s = new Scanner(System.in); // OK
      boolean done = false;
      long numero = 0;
      numtel = new long[1];
      while (!done)
      {
        try
        {
            System.out.println("Inserire un numero di telefono da 10 cifre:
");
            numero = Integer.parseInt(s.nextLine());
            long firstBound = 1000000000;
            long lastBound  = 9999999999L;
            if (numero>=firstBound && numero<=lastBound)
            {
               try
               {
                   numtel[i] = numero;
               }
               catch(ArrayIndexOutOfBoundsException e)
               {
                   int ValueSize = numtel.length;
                   long[] newArray = new long[2*ValueSize];
                   System.arraycopy(numtel, 0, newArray, 0,  ValueSize);
                   numtel = new long[newArray.length];
                   System.arraycopy(newArray, 0, numtel, 0,  ValueSize);
                   numtel[i] = numero;
               }
                String ins;
                do
                {
                    System.out.println("Vuoi inserire un'altro numero? Si o
No? ");
                    ins = s.nextLine();
                }
                while(!ins.equalsIgnoreCase("SI") &&
!ins.equalsIgnoreCase("NO"));
                if (ins.equalsIgnoreCase("NO"))
                    done = true;
                else
                {
                    i++;
                    done = false;
                }
            }
            else
                throw new IllegalArgumentException();
        }
        catch(NumberFormatException e)
        {
            System.out.println("Digitazione errata, riprovare!");
        }
        catch(IllegalArgumentException e)
        {
                System.out.println("Digitazione errata , riprovare!");
        }
      }//OK
      done = false;
      while (!done)
      {
        try
        {
            System.out.println("Inserire il valore che si vuol dare al
paramestro a: ");
            a = Double.parseDouble(s.nextLine());
            done = true;
        }
        catch(NumberFormatException e)
        {
            System.out.println("Digitazione errata, riprovare!");
        }
        catch(IllegalArgumentException e)
        {
                System.out.println("Digitazione errata , riprovare!");
        }
      }
  }
}
Ci sto provando ain tutti i modi ma nn ci riesco e non capisco il perchè nn
funzioni :-(((
Se qualcuno mi può essere d'aiuto! Vi prego!!!  Stò perdendo la testa con 
sta st........ta

Ho capito qual'è il problema, stavo guardando un libro in pratica i numeri 
integer variano da un range all'altro di numeri che vanno da max a min.value 
che sono circa numeri da 10 cifre si ma fino a ai primi 2 numeri che sono 
tipo 2130003251 se provo a fare tipo 2311231230 già mi da errore.
Per cui ho provato a cambiare
numero = Integer.parseInt(s.nextLine());
in:
numero = Long.parseLong(s.nextLine());
ma continua a farmi lo stesso problema, ora numero è un long, nn capisco 
dove sia il problema !?! 

Lasciamo perdere ora va, non so nemmeno come :-))))))))) sono solo 
stra-contento 

 con sta st........ta
mi verrebbe la voglia di non aiutarti ma in fondo sono un bravo ragazzo e
quindi ti daro' il necessario per risolvere..
numero e' di tipo long..
Integer.parseInt ritorna un int..
un numero di 10 cifre spazia da 999999999 < n < 10000000000..
un int in java e' di 32 bit..
un numero di 32 bit puo rappresentare i numeri 0 <= n <= 4294967295..
in java un int ha sempre segno..
in java un int puo' rappresentare i numeri -
2147483648
 <= n <= 
2147483647
..
di fatto..
 System.out.println(Integer.parseInt("
2147483647
"));
 System.out.println(Integer.parseInt("
2147483648
")); //NumberFormatException
post scriptum
se ti rispondo solo adesso non e' per dimostrazione che non volevo aiutarti
se non dopo il tuo comportamento..
-- 
www.iuz-lab.info
Home Politics - 
http://www.iuz-lab.info/homepolitics.php