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