logo

NumberFormatException i Java

NumberFormatException kastes, når vi forsøger at konvertere en streng til en numerisk værdi såsom float eller heltal, men formatet af inputstrengen er ikke passende eller ulovligt. Med ulovligt format menes det, at hvis du forsøger at parse en streng til et heltal, men strengen indeholder en boolsk værdi, er den af ​​ulovligt format. For eksempel - hvis vi forsøger at parse en streng til heltal, men strengen er null.

Det er en ukontrolleret undtagelse. Det er en underklasse af UlovligArgumentundtagelse og implementerer Serialiserbar interface.

hvor stor er min skærm

Konstruktører af NumberFormatException

Konstruktør Beskrivelse
NumberFormatException() Dette konstruerer en NumberFormatException uden nogen specificeret detaljeret besked.
NumberFormatException(String s) Dette konstruerer en NumberFormatException med en detaljeret specificeret besked 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. } } 

Produktion:

NumberFormatException i Java

Almindelige årsager til NumberFormatException

Da NumberFormatException opstår på grund af det uhensigtsmæssige format af streng for det tilsvarende argument for den metode, der kaster undtagelsen, kan der være forskellige måder at gøre det på. Et par af dem er nævnt som følger-

  • Den angivne inputstreng kan være null-
    Eksempel- Integer.parseInt(null);
  • Indtastningsstrengen kan være tom-
    Eksempel- Integer.parseInt('');
  • Indtastningsstrengen kan have efterladt mellemrum-
    Eksempel- Integer.parseInt('123');
  • Inputstrengen har muligvis et indledende mellemrum-
    Eksempel- Integer.parseInt(' 123');
  • Indtastningsstrengen kan være alfanumerisk-
    Eksempel- Long.parseLong('b2');
  • Inputstrengen kan have et input, der kan overskride området for den datatype, der lagrer den parsede streng-
    Eksempel- Integer.parseInt('135'); Den maksimalt mulige værdi af heltal kan være 127, men værdien i strengen er 135, hvilket er uden for rækkevidde, så dette vil kaste undtagelsen.
  • Der kan være et misforhold mellem inputstrengen og typen af ​​metoden, der bruges til at analysere. Hvis du angiver inputstrengen som '1.0', og du forsøger at konvertere denne streng til en heltalsværdi, vil den give en NumberFormatException-undtagelse.
    Eksempel- Integer.parseInt('1..0');

Hvordan undgår man NumberFormatException?

NumberFormatException er dybest set forårsaget, fordi inputstrengen ikke er godt formateret eller ulovlig, mens den parser til en numerisk værdi. Så for at undgå denne undtagelse skal den leverede inputstreng være godt formateret.

For at have en gyldig og velformateret streng skal du først og fremmest kontrollere, om inputstrengen ikke er null. Kontroller derefter for unødvendige mellemrum og trim dem alle ud efter at sætte flere kontroller for at bekræfte, at argumentstrengen matcher typen af ​​metoden, som vi bruger til at parse strengen. Hvis metoden er ParseInt(), skal du kontrollere, at strengen har en heltalsværdi, og for alle andre metoder udføres de påkrævede kontroller.

For at forhindre et Java-program i at generere en NumberFormatException, er det altid en god praksis at vedlægge de kodelinjer, som kan kaste denne undtagelse i en try-catch-blok 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 } } }