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 String
megnevezett 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 NumberFormatException
hiba), 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+
.