logo

NumberFormatException i Java

NumberFormatException blir kastet når vi prøver å konvertere en streng til en numerisk verdi som float eller heltall, men formatet til inndatastrengen er ikke passende eller ulovlig. Med ulovlig format menes det at hvis du prøver å analysere en streng til et heltall, men strengen inneholder en boolsk verdi, er den av ulovlig format. For eksempel - hvis vi prøver å analysere en streng til heltall, men strengen er null.

Det er et ukontrollert unntak. Det er en underklasse av UlovligArgumentUnntak og implementerer Serialiserbar grensesnitt.

hvordan konvertere streng til int i java

Konstruktører av NumberFormatException

Konstruktør Beskrivelse
NumberFormatException() Dette konstruerer et NumberFormatException uten spesifisert detaljert melding.
NumberFormatException(String s) Dette konstruerer et NumberFormatException med en detaljert spesifisert melding i streng s.

Eksempel på 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. } } 

Produksjon:

NumberFormatException i Java

Vanlige årsaker til NumberFormatException

Siden NumberFormatException oppstår på grunn av det upassende formatet til strengen for det tilsvarende argumentet til metoden som kaster unntaket, kan det være forskjellige måter å gjøre det på. Noen få av dem er nevnt som følger-

  • Inndatastrengen som er oppgitt kan være null-
    Eksempel- Heltall.parseInt(null);
  • Inndatastrengen kan være tom-
    Eksempel- Integer.parseInt('');
  • Inndatastrengen kan ha etterfølgende mellomrom-
    Eksempel- Integer.parseInt('123');
  • Inndatastrengen kan ha et ledende mellomrom-
    Eksempel- Integer.parseInt(' 123');
  • Inndatastrengen kan være alfanumerisk-
    Eksempel- Long.parseLong('b2');
  • Inndatastrengen kan ha en inngang som kan overskride rekkevidden til datatypen som lagrer den analyserte strengen-
    Eksempel- Integer.parseInt('135'); Den maksimale mulige verdien av heltall kan være 127, men verdien i strengen er 135 som er utenfor området, så dette vil kaste unntaket.
  • Det kan være et misforhold mellom inndatastrengen og typen metode som brukes til å analysere. Hvis du oppgir inndatastrengen som '1.0' og du prøver å konvertere denne strengen til en heltallsverdi, vil den gi et NumberFormatException-unntak.
    Eksempel- Integer.parseInt('1..0');

Hvordan unngå NumberFormatException?

NumberFormatException er i utgangspunktet forårsaket fordi inndatastrengen ikke er godt formatert eller ulovlig mens den analyseres til en numerisk verdi. Så for å unngå dette unntaket, må inndatastrengen være godt formatert.

For å ha en gyldig og godt formatert streng, må du først sjekke om inndatastrengen ikke er null. Deretter, sjekk for unødvendige mellomrom og trim ut alle etter det, sett flere kontroller for å bekrefte at argumentstrengen samsvarer med typen metode som vi bruker for å analysere strengen. Hvis metoden er ParseInt(), sjekk at strengen har en heltallsverdi, og på samme måte for alle andre metoder, gjør de nødvendige sjekkene.

For å forhindre at et Java-program genererer et NumberFormatException, er det alltid en god praksis å legge ved kodelinjene som kan kaste dette unntaket i en try-catch-blokk som vist nedenfor-

 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 } } }