În acest program, veți învăța diferite tehnici pentru a verifica dacă un șir este numeric sau nu în Java.
Pentru a înțelege acest exemplu, ar trebui să aveți cunoștințele despre următoarele subiecte de programare Java:
- Șir Java
- Java Exception Handling
Exemplul 1: verificați dacă un șir este numeric
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"); ) )
Ieșire
12345.15 este un număr
În programul de mai sus, avem un String
șir denumit care conține șirul de verificat. De asemenea, avem o valoare booleană numerică care stochează dacă rezultatul final este numeric sau nu.
Pentru a verifica dacă șirul conține doar numere, în blocul try, vom folosi Double
e parseDouble()
metoda de a converti șirul de la o Double
.
Dacă aruncă o eroare (adică NumberFormatException
eroare), înseamnă că șirul nu este un număr și numeric este setat la false
. Altfel, este un număr.
Cu toate acestea, dacă doriți să verificați dacă pentru un număr de șiruri, ar trebui să îl schimbați într-o funcție. Și, logica se bazează pe aruncarea de excepții, acest lucru poate fi destul de scump.
În schimb, putem folosi puterea expresiilor regulate pentru a verifica dacă șirul este numeric sau nu așa cum se arată mai jos.
Exemplul 2: verificați dacă un șir este numeric sau nu utilizând expresii regulate (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"); ) )
Ieșire
-1234.15 este un număr
În programul de mai sus, în loc să folosim un bloc try-catch, folosim regex pentru a verifica dacă șirul este numeric sau nu. Acest lucru se face folosind matches()
metoda lui String .
În matches()
metodă,
-?
permite zero sau mai mult-
pentru numerele negative din șir.\d+
verifică șirul trebuie să aibă cel puțin 1 sau mai multe numere (\d
).(\.\d+)?
permite zero sau mai multe din modelul dat(\.\d+)
în care\.
verifică dacă șirul conține.
(puncte zecimale) sau nu- Dacă da, ar trebui să fie urmat de cel puțin unul sau mai multe numere
\d+
.