Java program annak ellenőrzésére, hogy egy karakterlánc numerikus-e

Ebben a programban különböző technikákat tanulhat meg annak ellenőrzésére, hogy egy karakterlánc numerikus-e vagy sem a Java-ban.

A példa megértéséhez ismernie kell a következő Java programozási témákat:

  • Java karakterlánc
  • Java kivételkezelés

1. példa: Ellenőrizze, hogy egy karakterlánc numerikus-e

 public class Numeric ( public static void main(String() args) ( String string = "12345.15"; boolean numeric = true; try ( Double num = Double.parseDouble(string); ) catch (NumberFormatException e) ( numeric = false; ) if(numeric) System.out.println(string + " is a number"); else System.out.println(string + " is not a number"); ) )

Kimenet

 Az 12345.15 egy szám

A fenti programban van egy Stringmegnevezett karakterlánc, amely tartalmazza az ellenőrizni kívánt karakterláncot. Van egy logikai érték numerikusunk is, amely tárolja, ha a végeredmény numerikus vagy nem.

Annak ellenőrzésére, hogy a string tartalmazza csak a számokat, a try blokkban, az általunk használt Double„s parseDouble()módszer lehet átalakítani a karakterláncot Double.

Ha hibát dob (azaz NumberFormatExceptionhiba), ez azt jelenti, a húr nem szám és numerikus van állítva false. Egyébként ez egy szám.

Ha azonban szeretné ellenőrizni, hogy több karakterláncra van-e szüksége, akkor függvényre kell cserélnie. És a logika a kivételek dobásán alapul, ez elég drága lehet.

Ehelyett használhatjuk a reguláris kifejezések erejét annak ellenőrzésére, hogy a karakterlánc numerikus-e vagy sem, az alábbiak szerint.

2. példa: Ellenőrizze, hogy egy karakterlánc numerikus-e, vagy nem használ reguláris kifejezéseket (regex)

 public class Numeric ( public static void main(String() args) ( String string = "-1234.15"; boolean numeric = true; numeric = string.matches("-?\d+(\.\d+)?"); if(numeric) System.out.println(string + " is a number"); else System.out.println(string + " is not a number"); ) )

Kimenet

 -1234.15 egy szám

A fenti programban a try-catch blokk helyett regex segítségével ellenőrizzük, hogy a karakterlánc numerikus-e vagy sem. Ez String matches()módszerével történik.

A matches()módszerben

  • -?nulla vagy annál többet -engedélyez a karakterlánc negatív számai számára.
  • \d+ellenőrzi, hogy a karakterláncnak legalább 1 vagy több számmal kell rendelkeznie ( \d).
  • (\.\d+)?megengedi az adott minta nulla vagy annál nagyobb (\.\d+)számát, amelyben
    • \.ellenőrzi, hogy a karakterlánc tartalmaz-e .(tizedes pontokat) vagy sem
    • Ha igen, akkor legalább egy vagy több számot kell követnie \d+.

érdekes cikkek...