logo

NumberFormatException u Javi

Iznimka NumberFormatException javlja se kada pokušamo pretvoriti niz u numeričku vrijednost kao što je float ili integer, ali format ulaznog niza nije odgovarajući ili nedopušten. Nezakonitim formatom se misli na to da ako pokušavate raščlaniti niz na cijeli broj, ali niz sadrži booleovu vrijednost, on je nedopuštenog formata. Na primjer - ako pokušamo raščlaniti niz na cijeli broj, ali niz je null.

To je neprovjerena iznimka. To je podrazred od IllegalArgumentException i provodi Serializable sučelje.

Konstruktori NumberFormatException

Konstruktor Opis
NumberFormatException() Ovo konstruira NumberFormatException bez navedene detaljne poruke.
NumberFormatException(String s) Ovo konstruira NumberFormatException s detaljno navedenom porukom u nizu s.

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

Izlaz:

NumberFormatException u Javi

Uobičajeni razlozi za NumberFormatException

Budući da se NumberFormatException javlja zbog neprikladnog formata stringa za odgovarajući argument metode koja izbacuje iznimku, mogu postojati različiti načini za to. Neki od njih su spomenuti kako slijedi-

  • Navedeni ulazni niz može biti null-
    Primjer- Integer.parseInt(null);
  • Ulazni niz može biti prazan-
    Primjer- Integer.parseInt('');
  • Ulazni niz možda ima razmak na kraju -
    Primjer- Integer.parseInt('123');
  • Ulazni niz možda ima vodeći razmak-
    Primjer- Integer.parseInt(' 123');
  • Ulazni niz može biti alfanumerički-
    Primjer- Long.parseLong('b2');
  • Ulazni niz može imati unos koji može premašiti raspon tipa podataka koji pohranjuje raščlanjeni niz-
    Primjer- Integer.parseInt('135'); Najveća moguća vrijednost cijelog broja može biti 127, ali vrijednost u nizu je 135 što je izvan raspona, pa će ovo izbaciti iznimku.
  • Možda postoji nepodudarnost između ulaznog niza i vrste metode koja se koristi za raščlanjivanje. Ako navedete ulazni niz poput '1.0' i pokušate pretvoriti ovaj niz u cjelobrojnu vrijednost, izbacit će iznimku NumberFormatException.
    Primjer- Integer.parseInt('1..0');

Kako izbjeći NumberFormatException?

Iznimka NumberFormatException u osnovi je uzrokovana time što ulazni niz nije dobro formatiran ili je nedopušten tijekom raščlambe u numeričku vrijednost. Dakle, da bi se izbjegla ova iznimka, ponuđeni ulazni niz mora biti dobro formatiran.

Da biste imali valjan i dobro formatiran niz, prije svega provjerite nije li ulazni niz null. Zatim provjerite ima li nepotrebnih razmaka i izrežite ih sve nakon toga stavite nekoliko provjera da potvrdite da niz argumenta odgovara vrsti metode koju koristimo za raščlanjivanje niza. Ako je metoda ParseInt(), provjerite ima li niz cjelobrojnu vrijednost, a isto tako za sve ostale metode napravite potrebne provjere.

Kako biste spriječili Java program da generira NumberFormatException, uvijek je dobra praksa priložiti retke koda koji mogu izbaciti ovu iznimku u try-catch blok kao što je prikazano u nastavku-

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