I det här programmet lär du dig olika tekniker för att kontrollera om en sträng är numerisk eller inte i Java.
För att förstå detta exempel bör du ha kunskap om följande Java-programmeringsämnen:
- Java-sträng
- Java Exception Handling
Exempel 1: Kontrollera om en sträng är numerisk
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"); ) )
Produktion
12345.15 är ett nummer
I programmet ovan har vi en String
namngiven sträng som innehåller strängen som ska kontrolleras. Vi har också ett booleskt värde som lagras om slutresultatet är numeriskt eller inte.
För att kontrollera om strängen innehåller endast siffror i try blocket använder vi Double
är parseDouble()
metod för att konvertera strängen till en Double
.
Om det ger ett fel (dvs NumberFormatException
fel) betyder det att strängen inte är ett tal och numeriskt är satt till false
. Annars är det ett nummer.
Men om du vill kontrollera om det finns ett antal strängar måste du ändra det till en funktion. Och logiken är baserad på kastande undantag, det kan vara ganska dyrt.
Istället kan vi använda kraften i reguljära uttryck för att kontrollera om strängen är numerisk eller inte som visas nedan.
Exempel 2: Kontrollera om en sträng är numerisk eller inte använder reguljära uttryck (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"); ) )
Produktion
-1234,15 är ett tal
I programmet ovan använder vi regex för att kontrollera om strängen är numerisk eller inte i stället för att använda ett försök-fångstblock. Detta görs med Strings matches()
metod.
I matches()
metoden,
-?
tillåter noll eller mer-
för negativa tal i strängen.\d+
kontrollerar att strängen måste ha minst 1 eller fler nummer (\d
).(\.\d+)?
tillåter noll eller mer av det angivna mönstret(\.\d+)
i vilket\.
kontrollerar om strängen innehåller.
(decimaler) eller inte- Om ja, bör det följas av minst ett eller flera siffror
\d+
.