Při práci s Javou je někdy nutné zkontrolovat, zda je řetězec číslo. To může být užitečné například při čtení uživatelského vstupu nebo při zpracování dat z externího zdroje. Java má několik způsobů, jak tento úkol provést, včetně použití regulárních výrazů a metod třídy Number.
Jedním ze způsobů, jak zkontrolovat řádek na číslo, je použití metod třídy Number, jako jsou parseInt() nebo parseFloat(). Můžete například použít následující kód:
try catch (NumberFormatException e)
Pokud vstupní řádek input může být úspěšně převedeno na celé číslo, pak je to číslo. V opačném případě bude vyřazena výjimka NumberFormatException.
Dalším způsobem, jak zkontrolovat, zda je řetězec číslo, je použití regulárních výrazů. Můžete určit šablonu pro číslo a poté použít metodu matches() třídy String pro kontrolu řetězce, aby odpovídaly této šabloně. Můžete například použít následující kód:
String pattern = "\\d+";if (input.matches(pattern))else
V tomto příkladu vzor "\\D+ " určuje libovolnou posloupnost číslic. Pokud se vstupní řádek skládá výhradně z číslic, pak je považován za číslo.
Kontrola je řetězec číslo v Javě
| Metoda | Popis |
|---|---|
| try-catch blok s metodou parseInt() | Pokus o převod řádku na číslo pomocí metody parseInt (). Pokud je převod úspěšný, řetězec je číslo. |
| try-catch jednotka s metodou Double.parseDouble() | Podobně jako předchozí metoda, ale používá se metoda Double.parseDouble(). Tato metoda umožňuje pracovat s čísly s plovoucím bodem. |
| pravidelné výrazy | Použití regulárních výrazů ke kontrole, zda řetězec odpovídá dané číselné šabloně. |
Každá z těchto metod má své klady a zápory a výběr metody závisí na konkrétním úkolu a požadavcích na kontrolu. Je však důležité vzít v úvahu možnost získat chybu během převodu řetězce na číslo a podle toho ji zpracovat.
Metoda 1: Použití metody parseInt
Chcete-li zkontrolovat řádek na číslo, musíte zabalit volání metody parseInt() do bloku try-catch a zachytit výjimku NumberF
Metoda 2: Použití metody Double.parseDouble
Použití metody Double.parseDouble () pro ověření řádku na číslo může být užitečné, pokud potřebujete pracovat také s číselnými hodnotami daného řádku. Pamatujte však, že tato metoda může způsobit vyloučení NumberFormatException, pokud řetězec nelze převést na číslo.
Zde je příklad použití metody Double.parseDouble () pro kontrolu řádku na číslo:
public static boolean isNumeric(String str) catch (NumberFormatException nfe) return true;>
Tato metoda vrací hodnotu true, pokud byla převod řádku na číslo úspěšný, a false, pokud došlo k vyloučení NumberFormatException. Tuto metodu tedy můžete použít k ověření řádku na číslo v Javě.
Metoda 3: Použití metody try-catch
Zde je příklad kódu:
public static boolean isNumeric(String str) catch (NumberFormatException e) return true;>
V tomto příkladu používáme metodu parseDouble () k pokusu převést řetězec na číslo typu double. Pokud řetězec není číslo, bude vyřazena výjimka NumberFormatException a my ji zachytíme pomocí bloku try-catch. Pokud nedojde k žádné výjimce, vrátíme true, což znamená, že řádek je číslo.
System.out.println(isNumeric("123")); // trueSystem.out.println(isNumeric("abc")); // false
Na výstupu dostaneme:
truefalse
Tato metoda nám také umožňuje zkontrolovat, zda je řetězec celé číslo pomocí metody parseInt(). V tomto případě budeme chytat výjimku.
Metoda 4: Použití regulárního výrazu
Pro kontrolu, zda je řetězec číslo, můžeme použít následující regulární výraz:
Tento regulární výraz zkontroluje, zda řetězec začíná volitelným znaménkem "+" nebo " - " následovaným libovolným počtem číslic, které mohou následovat volitelná desetinná čárka a jedna nebo více číslic za ní.
Pro použití regulárního výrazu v Javě můžeme použít třídu vzor z balíčku java.util.regex . Zde je příklad kontroly řádku na číslo pomocí regulárního výrazu:
import java.util.regex.Matcher;import java.util.regex.Pattern;public class Main else >>
V tomto příkladu vytvoříme regulární výraz pomocí metody compile třídy vzor . Poté vytvoříme objekt Matcher pomocí metody matcher třídy vzor a použijeme metodu matches ke kontrole, zda řetězec odpovídá regulárnímu výrazu.