logo

NumberFormatException in Java

La NumberFormatException viene lanciata quando proviamo a convertire una stringa in un valore numerico come float o intero, ma il formato della stringa di input non è appropriato o illegale. Per formato illegale si intende che se si sta tentando di analizzare una stringa in un numero intero ma la stringa contiene un valore booleano, il formato è illegale. Ad esempio, se proviamo ad analizzare una stringa in intero ma la stringa è nulla.

È un'eccezione non controllata. È una sottoclasse di IllegalArgumentException e implementa il Serializzabile interfaccia.

Costruttori di NumberFormatException

Costruttore Descrizione
NumberFormatException() Questo costruisce una NumberFormatException senza un messaggio dettagliato specificato.
NumberFormatException(String s) Questo costruisce una NumberFormatException con un messaggio specificato dettagliato nella stringa s.

Esempio di NumberFormatException

 public class Example { public static void main(String[] args) { int a = Integer.parseInt(null); //throws Exception as //the input string is of illegal format for parsing as it is null. } } 

Produzione:

installa Maven
NumberFormatException in Java

Motivi comuni per NumberFormatException

Poiché NumberFormatException si verifica a causa del formato inappropriato della stringa per l'argomento corrispondente del metodo che lancia l'eccezione, possono esserci vari modi per farlo. Alcuni di loro sono menzionati come segue-

  • La stringa di input fornita potrebbe essere null-
    Esempio- Intero.parseInt(null);
  • La stringa di input potrebbe essere vuota-
    Esempio- Intero.parseInt('');
  • La stringa di input potrebbe contenere uno spazio finale-
    Esempio- Integer.parseInt('123');
  • La stringa di input potrebbe avere uno spazio iniziale-
    Esempio- Intero.parseInt(' 123');
  • La stringa di input può essere alfanumerica-
    Esempio- Long.parseLong('b2');
  • La stringa di input potrebbe avere un input che potrebbe superare l'intervallo del tipo di dati che memorizza la stringa analizzata.
    Esempio- Integer.parseInt('135'); Il valore massimo possibile dell'intero può essere 127, ma il valore nella stringa è 135 che è fuori intervallo, quindi genererà un'eccezione.
  • Potrebbe esserci una mancata corrispondenza tra la stringa di input e il tipo del metodo utilizzato per l'analisi. Se fornisci la stringa di input come '1.0' e provi a convertire questa stringa in un valore intero, verrà generata un'eccezione NumberFormatException.
    Esempio- Integer.parseInt('1..0');

Come evitare NumberFormatException?

La NumberFormatException è fondamentalmente causata dal fatto che la stringa di input non è ben formattata o non è valida durante l'analisi in un valore numerico. Quindi, per evitare questa eccezione, la stringa di input fornita deve essere ben formattata.

Per avere una stringa valida e ben formattata, prima di tutto, controlla se la stringa di input non è nulla. Quindi, controlla gli spazi non necessari e ritagliali tutti, quindi esegui diversi controlli per verificare che la stringa dell'argomento corrisponda al tipo del metodo che stiamo utilizzando per analizzare la stringa. Se il metodo è ParseInt(), controlla che la stringa abbia un valore intero e allo stesso modo per tutti gli altri metodi fai i controlli richiesti.

Per impedire a un programma Java di generare una NumberFormatException, è sempre buona norma racchiudere le righe di codice che possono generare questa eccezione in un blocco try-catch come mostrato di seguito:

 public class NumberFormatExceptionExample { private static final String inputString = '123.33'; public static void main(String[] args) { try { int a = Integer.parseInt(inputString); }catch(NumberFormatException ex){ System.err.println('Invalid string in argumment'); //request for well-formatted string } } }