V tomto programu se naučíte různé techniky, jak zkontrolovat, zda je řetězec v Javě číselný či nikoli.
Abychom porozuměli tomuto příkladu, měli byste znát následující programovací témata Java:
- Řetězec Java
- Zpracování výjimek Java
Příklad 1: Zkontrolujte, zda je řetězec číselný
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"); ) )
Výstup
12345.15 je číslo
Ve výše uvedeném programu máme String
pojmenovaný řetězec, který obsahuje řetězec, který má být zkontrolován. Máme také booleovskou číselnou hodnotu, která ukládá, pokud je konečný výsledek číselný nebo ne.
Chcete-li zjistit, zda řetězec obsahuje pouze čísla v bloku try, používáme Double
‚s parseDouble()
metodu převést řetězec na Double
.
Pokud vyvolá chybu (tj. NumberFormatException
Chybu), znamená to, že řetězec není číslo a číselná hodnota je nastavena na false
. Jinak je to číslo.
Pokud však chcete zkontrolovat, zda existuje počet řetězců, budete jej muset změnit na funkci. Logika je založena na házení výjimek, což může být docela drahé.
Místo toho můžeme použít sílu regulárních výrazů ke kontrole, zda je řetězec číselný nebo ne, jak je znázorněno níže.
Příklad 2: Zkontrolujte, zda je řetězec numerický nebo nepoužívá regulární výrazy (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"); ) )
Výstup
-1234,15 je číslo
Ve výše uvedeném programu namísto použití bloku try-catch použijeme regex ke kontrole, zda je řetězec číselný nebo ne. To se provádí pomocí Stringovy matches()
metody.
V matches()
metodě
-?
umožňuje nula nebo více-
záporných čísel v řetězci.\d+
zkontroluje, zda řetězec musí obsahovat alespoň 1 nebo více čísel (\d
).(\.\d+)?
umožňuje nulu nebo více z daného vzoru,(\.\d+)
ve kterém\.
zkontroluje, zda řetězec obsahuje.
(desetinná místa) nebo ne- Pokud ano, mělo by následovat alespoň jedno nebo více čísel
\d+
.