Newsgroup: it.comp.java
Titolo: problema di ricevere solo numeri

Ciao a tutti ho un problemino, sarą che sono arruginito di java ma non 
riesco a gestire proprio un'eccezione in modo che non mi faccia un uscita di 
tipo 1.
Io devo ricevere da tastiera solo esclusivamente numeri, e nel caso si 
digitassero delle stringhe vorrei mi continuasse a ripetere la domanda di 
inserire il numero(come lo fa anche quando inserisco un numero).
Io ho provato cosģ:
    Scanner s = new Scanner(System.in);
    boolean done = false;
    int numero;
    int i = 0;
    while (!done)
    {
        System.out.println("Inserire un numero di telefono da 10 cifre: ");
        try
        {
            numero = s.nextInt();
        }
        catch(NumberFormatException e)
        {
        }
    }
Ho provato a mettere dentro il blocco catch anche solo number = -1; ma 
niente
e anche a mettere solo done = true, e anche entrambe, ma niente.
Qualcuno che mi possa essere d'aiuto?
P.S. Lo so che č una ca....ta ma č tanto che non uso java...ho provato a 
guardare su vecchi appunti o libri ma non trovo niente di interessante

Ho risolto in parte il problema, nel senso che ora non mi da piů un uscita 
di tipo 1 (evviva!!!)
perchč ho aggiunto nel catch un illegalargumentexception facendo cosě:
import java.util.*;
import java.io.*;
public class Ex /** Struttura valida per inserire numeri,
                 *  ma non valida nel catturare l'eccezione del catch
                 *  su stringhe
                 */
{ public static void main(String[] args) throws IOException
  {
    Scanner s = new Scanner(System.in);
    boolean done = false;
    int numero;
    while (!done)
    {
        System.out.println("Inserire un numero di telefono da 10 cifre: ");
        try
        {
            numero = s.nextInt();
        }
        catch(NumberFormatException e)
        {
            numero = 0;
            System.out.println("Digitazione errata, riprovare");
        }
        catch(InputMismatchException e)
        {
            System.out.println("Digitazione errata 2, riprovare");
        }
    }
  }
}
perň ora rimane un'altro problemino, perchč mi continua a domandare il 
numero dopo la prima volta che va in catch e continua da solo a rispondersi 
Digitazione errata 2, riprovare..... 

 Digitazione errata 2, riprovare..... 
Ovvio, visto che "done" resta "false" ...
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !

 Ovvio, visto che "done" resta "false" ...
Eh si hai ragione, infatti ho provato a cambiare un po' la struttura ma 
anche se riesco comunque a fargli domandare in continuazione il numero anche 
se il valore inserito č corretto, quando č sbagliato se gli metto done = 
true nei 2 catch mi esce solamentedal ciclo, mentre se lo setto a "false" mi 
continua a fare il problema di prima.
Ho provato a fare cosě:
    Scanner s = new Scanner(System.in);
    boolean done = false;
    long numero = 0;
    while (!done)
    {
        try
        {
            System.out.println("Inserire un numero di telefono da 10 cifre: 
");
            numero = s.nextLong();
            String lung = Long.toString(numero);
            if (numero<1000000000L || numero>9999999999L) // Questo prechč 
voglio solo numeri da 10 cifre
            {
                System.out.println("Digitazione errata, riprovare");
                done = false;
            }
            else
                done = false;
        }
        catch(NumberFormatException e)
        {
            numero = -1;
            System.out.println("Digitazione errata, riprovare \n");
            done = true; // Ho messo true ma cosě si ferma, vorrei mi 
continuasse a richiedere di inserire il numero
        }
        catch(InputMismatchException e)
        {
            String alfa = Long.toString(numero); // provo a trasformare il 
numero o stringa inserita da nextInt in stringa
            if(alfa.length() == 0 || alfa =="\n" || alfa == "\r" || alfa == 
null) // nel caso la digitazione sia l'"invio" o cmq non ci sia niente
                            // o la lunghezza sia =0 lo faccio fermare, ma 
non mi funziona come voglio io
            {
                done = true;
            }
            else
            {
                System.out.println("Digitazione errata , riprovare");
                done = true;  // Ho messo true ma cosě si ferma, vorrei mi 
continuasse a richiedere di inserire il numero, se metto false va in un 
ciclo infinito
// e continua a rispondersi da solo
            }
        }
    }
    System.out.println("Fine");
  }
}
Ho spigato i miei problemi nei commenti..Ora provo a cercare alternative, se 
ci riesco vi faccio sapere, nel frattempo se c'č qualcuno che mi possa 
aiutare, mi farebbe un enorme piacere..

Ci son riuscito da solo, inserendo in più  un'opzione di scelta se dopo un 
inserimento valido di un numero voglio inserire ancora altri numeri
Ciao!