logo

NumberFormatException v Javi

Izjema NumberFormatException se vrže, ko poskušamo pretvoriti niz v številsko vrednost, kot je float ali celo število, vendar oblika vhodnega niza ni primerna ali nezakonita. Z nedovoljenim formatom je mišljeno, da če poskušate niz razčleniti na celo število, vendar niz vsebuje logično vrednost, je nedovoljen format. Na primer - če poskušamo niz razčleniti na celo število, vendar je niz nič.

To je nepreverjena izjema. Je podrazred IllegalArgumentException in izvaja Serializable vmesnik.

Konstruktorji NumberFormatException

Konstruktor Opis
NumberFormatException() To ustvari izjemo NumberFormatException brez določenega podrobnega sporočila.
NumberFormatException(String s) To ustvari izjemo NumberFormatException s podrobno podanim sporočilom v nizu s.

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

Izhod:

NumberFormatException v Javi

Pogosti razlogi za NumberFormatException

Ker do izjeme NumberFormatException pride zaradi neustrezne oblike niza za ustrezen argument metode, ki vrže izjemo, lahko obstaja več načinov za to. Nekaj ​​​​jih je omenjenih na naslednji način -

  • Predloženi vnosni niz je lahko ničelni
    primer- Integer.parseInt(null);
  • Vnosni niz je lahko prazen-
    primer- Integer.parseInt('');
  • Vhodni niz ima lahko končni presledek-
    primer- Integer.parseInt('123');
  • Vhodni niz ima morda začetni presledek-
    primer- Integer.parseInt(' 123');
  • Vnosni niz je lahko alfanumerični-
    primer- Long.parseLong('b2');
  • Vhodni niz ima lahko vhod, ki lahko presega obseg podatkovnega tipa, ki shranjuje razčlenjen niz-
    primer- Integer.parseInt('135'); Največja možna vrednost celega števila je lahko 127, vendar je vrednost v nizu 135, kar je izven obsega, zato bo to povzročilo izjemo.
  • Morda obstaja neujemanje med vhodnim nizom in vrsto metode, ki se uporablja za razčlenjevanje. Če podate vhodni niz, kot je '1.0', in poskusite ta niz pretvoriti v celoštevilsko vrednost, bo vrgel izjemo NumberFormatException.
    primer- Integer.parseInt('1..0');

Kako se izogniti NumberFormatException?

Izjema NumberFormatException je v bistvu posledica tega, ker vhodni niz med razčlenjevanjem v številsko vrednost ni dobro oblikovan ali je nezakonit. Da bi se izognili tej izjemi, mora biti predloženi vnosni niz dobro oblikovan.

Če želite imeti veljaven in dobro oblikovan niz, najprej preverite, ali vhodni niz ni nič. Nato preverite nepotrebne presledke in jih vse izrežite, nato pa večkrat preverite, ali se niz argumentov ujema z vrsto metode, ki jo uporabljamo za razčlenjevanje niza. Če je metoda ParseInt(), preverite, ali ima niz celoštevilsko vrednost, prav tako za vse druge metode izvedite zahtevana preverjanja.

Da bi preprečili, da bi program Java ustvaril NumberFormatException, je vedno dobro, da vrstice kode, ki lahko vrže to izjemo, priložite v blok try-catch, kot je prikazano spodaj-

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