Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] - Eccezione Integer.parseInt

    Ciao a tutti
    Come da titolo vorrei sapere come ovviare a quest'eccezione.

    Mi spiego meglio: se ho uno Scanner s allora per aggirare un'eccezione potrò fare
    codice:
    ...
    if (!s.hasNextInt()) return null; // o qualcosa del genere
    else
         int i = s.nextInt();
    Se però ho, ad esempio, un oggetto JOptionPane p, allora per leggere in input un intero dovrò necessariamente fare
    codice:
    String s = pane.showInputDialog("Digita un intero");
    int i = Integer.parseInt(s);
    Se però un un utente inserisce un qualsiasi carattere diverso da un numero, allora ovviamente il metodo parseInt() genera un'eccezione.

    Come posso "aggirare" l'eccezione in questi casi?

    Grazie a tutti

  2. #2
    Ma inserire un valore diverso da un intero è consentito o no?
    Se un utente può inserire solo un intero, allora fai un ciclo infinito (oppure gestito da te nel modo migliore) per leggere il valore ed ogni volta intercetti l'eccezione:

    codice:
            Scanner s = new Scanner(System.in);
            Integer readed = null;
            while (true) {
                try {
                    System.out.print("\nInserisci un numero: ");
                    readed = Integer.parseInt(s.next());
                    break;
                } catch (NumberFormatException ex) {
                    // se entra nel catch vuol dire che il valore recuperato non è un intero e continua il ciclo
                }
            }
    lolide
    Java Programmer

    Informati

  3. #3
    Originariamente inviato da lolide
    Ma inserire un valore diverso da un intero è consentito o no?
    Se un utente può inserire solo un intero, allora fai un ciclo infinito (oppure gestito da te nel modo migliore) per leggere il valore ed ogni volta intercetti l'eccezione:
    Non è consentito. Quello che intendevo io è: è possibile "aggirare" quest'eccezione invece di catturarla e generare un ciclo del genere?
    Con lo scanner, per esempio, con il codice del mio primo esempio sopra il compilatore non genererà mai un'eccezione.
    Con il secondo esempio, invece, ovviamente si! In questo caso c'è bisogna necessariamente di catturare l'eccezione?

    Grazie come sempre

  4. #4
    Originariamente inviato da tigerjack89
    Non è consentito. Quello che intendevo io è: è possibile "aggirare" quest'eccezione invece di catturarla e generare un ciclo del genere?
    Con lo scanner, per esempio, con il codice del mio primo esempio sopra il compilatore non genererà mai un'eccezione.
    Con il secondo esempio, invece, ovviamente si! In questo caso c'è bisogna necessariamente di catturare l'eccezione?
    Certo... se la string anon è un numero l'eccezione la genererà sempre, ed è giusto che lo faccia.
    Anche Scanner funziona allo stesso modo... se l'input non è un intero genera un eccezione.
    Originariamente inviato da tigerjack89
    Grazie come sempre
    lolide
    Java Programmer

    Informati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.