logo

NumberFormatException a Java nyelven

A NumberFormatException akkor jelenik meg, ha egy karakterláncot numerikus értékké próbálunk átalakítani, például float vagy integer, de a bemeneti karakterlánc formátuma nem megfelelő vagy illegális. Az illegális formátum alatt azt értjük, hogy ha egy karakterláncot egész számmá próbálunk elemezni, de a karakterlánc logikai értéket tartalmaz, akkor az illegális formátumú. Például - ha megpróbálunk egy karakterláncot egész számra elemezni, de a karakterlánc nulla.

Edith mack hirsch

Ez egy ellenőrizetlen kivétel. Ez egy alosztálya IllegalArgumentException és megvalósítja a Sorozatozható felület.

A NumberFormatException konstruktorai

Konstruktőr Leírás
NumberFormatException() Ez létrehoz egy NumberFormatException-t részletes üzenet nélkül.
Számformátum kivétel (karakterláncok) Ez létrehoz egy NumberFormatException-t egy részletes, meghatározott üzenettel az s karakterláncban.

Példa a NumberFormatExceptionre

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

Kimenet:

NumberFormatException a Java nyelven

A NumberFormatException gyakori okai

Mivel a NumberFormatException a kivételt kiváltó metódus megfelelő argumentumához tartozó karakterlánc nem megfelelő formátuma miatt fordul elő, ennek többféle módja is lehet. Ezek közül néhányat az alábbiak szerint említünk meg:

  • A megadott bemeneti karakterlánc lehet null-
    Példa- Integer.parseInt(null);
  • Lehet, hogy a bemeneti karakterlánc üres -
    Példa- Integer.parseInt('');
  • Lehet, hogy a bemeneti karakterlánc végén szóköz van.
    Példa- Integer.parseInt('123');
  • Lehet, hogy a bemeneti karakterlánc kezdő szóközt tartalmaz-
    Példa- Integer.parseInt(' 123');
  • A bemeneti karakterlánc lehet alfanumerikus
    Példa- Long.parseLong('b2');
  • A bemeneti karakterláncnak lehet olyan bemenete, amely meghaladhatja az elemzett karakterláncot tároló adattípus tartományát.
    Példa- Integer.parseInt('135'); Az egész szám maximális értéke 127 lehet, de a karakterlánc értéke 135, ami kívül esik a tartományon, így ez kivételt jelent.
  • Előfordulhat, hogy nem egyezik a bemeneti karakterlánc és az elemzéshez használt metódus típusa. Ha megadja a bemeneti karakterláncot, például az „1.0”-t, és megpróbálja ezt a karakterláncot egész értékké alakítani, akkor számformátum kivételt fog dobni.
    Példa- Integer.parseInt('1..0');

Hogyan lehet elkerülni a NumberFormatException kivételt?

A NumberFormatException kivételt alapvetően az okozza, hogy a bemeneti karakterlánc nem jól formázott vagy illegális a számértékké történő elemzés során. Ezért a kivétel elkerülése érdekében a megadott bemeneti karakterláncot jól formázni kell.

Ahhoz, hogy érvényes és jól formázott karakterlánc legyen, mindenekelőtt ellenőrizze, hogy a bemeneti karakterlánc nem null-e. Ezután ellenőrizze a szükségtelen szóközöket, majd vágja le mindegyiket, majd többször is ellenőrizze, hogy az argumentum-karakterlánc megfelel-e annak a metódusnak, amelyet a karakterlánc elemzéséhez használunk. Ha a metódus a ParseInt(), ellenőrizze, hogy a karakterláncnak egész értéke van-e, és hasonlóképpen minden más metódusnál végezze el a szükséges ellenőrzéseket.

tat teljes formában

Annak megakadályozása érdekében, hogy egy Java program NumberFormatException-t generáljon, mindig jó gyakorlat, ha a kódsorokat, amelyek ezt a kivételt dobhatják, egy try-catch blokkba zárják, az alábbiak szerint.

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