In der Programmiersprache Java ist es oft notwendig zu überprüfen, ob eine angegebene Zeichenfolge eine Zahl ist. Dies kann beispielsweise beim Lesen von Daten aus einer Datei oder beim Arbeiten mit Benutzereingaben nützlich sein. In diesem Artikel betrachten wir einige effektive Möglichkeiten, eine Zeichenfolge in Java auf eine Zahl zu überprüfen.
Der erste Weg ist die Verwendung der Methode parseInt() aus der Klasse Integer. Diese Methode konvertiert eine Zeichenfolge in eine Ganzzahl und gibt ihren Wert zurück. Wenn die Konvertierung erfolgreich war, ist die Zeichenfolge eine Zahl. Wenn eine Ausnahme aufgetreten ist NumberFormatException dann ist die Zeichenfolge keine Zahl.
Eine andere Möglichkeit ist die Verwendung eines regulären Ausdrucks. In Java wird eine Klasse verwendet, um mit regulären Ausdrücken zu arbeiten Pattern und Matcher. Ein regulärer Ausdruck zum Überprüfen einer Zahl könnte folgendermaßen aussehen: "^-?\\d+(\\.\\d+)?$". Hier bedeutet "^" den Anfang einer Zeile, "-?" bedeutet, dass es ein Minus vor einer Zahl geben kann, "\\d+" bedeutet eine oder mehrere Ziffern, "(\\.\\d+)?" bedeutet, dass es eine Dezimalzahl geben kann.
Die Character-Methode.isDigit()
Methode isDigit() kann verwendet werden, um jedes Zeichen in einer Zeichenfolge zu überprüfen. Dies ist besonders nützlich, wenn wir sicherstellen möchten, dass die gesamte Zeichenfolge nur aus Ziffern besteht und keine anderen Zeichen enthält.
Um die Methode zu verwenden isDigit() sie müssen die Character-Klasse importieren:
Betrachten Sie ein Beispiel für die Verwendung der Methode isDigit():
String str = "12345";boolean isNumber = true;for (int i = 0; i < str.length(); i++) >System.out.println("Строка " + str + (isNumber ? " является числом" : " не является числом"));
Methode isDigit() kann auch bei der Validierung von Benutzereingaben nützlich sein, wenn Sie überprüfen möchten, ob der Benutzer nur Zahlen eingegeben hat, z. B. wenn Sie eine Telefonnummer oder eine PIN eingeben.
Daher ist die Methode Character.isDigit() es ist ein effektives Werkzeug, um zu überprüfen, ob eine Zeichenfolge in der Programmiersprache Java eine Zahl ist, dank ihrer Einfachheit und der Möglichkeit, jedes Zeichen in einer Zeichenfolge zu überprüfen.
Validierung mit regulären Ausdrücken
| Vorlage | Die Beschreibung |
|---|---|
| ^-?\d+$ | Überprüft, ob die Zeichenfolge nur aus Ziffern besteht |
| ^-?\d+(\.\d+)?$ | Überprüft, ob die Zeichenfolge eine Dezimalzahl ist |
| ^-?\d+\.\d+$ | Überprüft, ob die Zeichenfolge eine positive oder negative Dezimalzahl ist |
String number = "12345";boolean isNumber = number.matches("^-?\\d+$");System.out.println(isNumber); // trueString decimalNumber = "3.14";isNumber = decimalNumber.matches("^-?\\d+(\\.\\d+)?$");System.out.println(isNumber); // trueString negativeNumber = "-42";isNumber = negativeNumber.matches("^-?\\d+$");System.out.println(isNumber); // true
Wenn Sie überprüfen möchten, dass die Zeichenfolge nur Zahlen mit einer bestimmten Länge enthält, können Sie das folgende Muster verwenden:
String number = "12345";boolean isFiveDigits = number.matches("\\d");System.out.println(isFiveDigits); // trueString number = "1234567890";boolean isTenDigits = number.matches("\\d");System.out.println(isTenDigits); // true
Reguläre Ausdrücke ermöglichen komplexere Überprüfungen, beispielsweise können Sie einen Bereich von Zahlen definieren oder andere Muster zur Validierung verwenden. Bevor Sie reguläre Ausdrücke zum Überprüfen von Zahlen verwenden, müssen Sie die Muster sorgfältig überprüfen und alle möglichen Datenvarianten berücksichtigen, die vom Benutzer eingegeben werden können.
Die Integer-Methode.parseInt()
Ein Beispiel für die Verwendung der Integer-Methode.parseInt() :
// Проверка, является ли строка числомString str = "12345";try catch (NumberFormatException e)
Die Integer-Methode.parseInt() kann auch verwendet werden, um Zahlen mit Vorzeichen zu überprüfen, zum Beispiel:
String str = "-12345";try catch (NumberFormatException e)
In diesem Beispiel wird die Integer-Methode verwendet.parseInt() konvertiert die Zeichenfolge "-12345" in einen ganzzahligen Wert. Wenn eine Zeichenfolge mit einem "-" beginnt, wird sie als Zahl mit einem Minuszeichen erkannt. Wenn die Zeichenfolge keine Zahl ist, wird eine NumberFormatException ausgelöst, und der Code im Catch-Block wird ausgeführt.
Die Integer-Methode.parseInt() kann zum Überprüfen von Gleitkommazahlen verwendet werden, sollte jedoch in diesem Fall die Double-Methode verwendet werden.parseDouble() oder Float.parseFloat() abhängig vom Typ der Zahl.
Verwenden der Double-Methode.parseDouble()
Um die Double-Methode zu verwenden.parseDouble() , muss die zu überprüfende Zeichenfolge an ihn übergeben werden. Wenn die Zeichenfolge eine Zahl ist, gibt die Methode den entsprechenden numerischen Wert vom Typ double zurück . Wenn die Zeichenfolge jedoch keine Zahl ist, wird eine NumberFormatException ausgelöst.
Betrachten Sie zum Beispiel den folgenden Code:
String input = "123.45";try catch (NumberFormatException e)
Строка является числом: 123.45
Строка не является числом
Also, die Double-Methode.parseDouble() ist eine bequeme und effiziente Möglichkeit zu überprüfen, ob eine Zeichenfolge in Java eine Zahl ist. Es ermöglicht Ihnen, eine Zeichenfolge in eine Zahl zu konvertieren oder sie auf Übereinstimmung mit einem numerischen Format zu überprüfen.
Überprüfen Sie mit der NumberUtils-Methode.isCreatable()
Um diese Methode verwenden zu können, müssen Sie die NumberUtils-Klasse aus dem org-Paket importieren.apache.commons.lang3 und rufen Sie die isCreatable() -Methode auf, indem Sie die zu überprüfende Zeichenfolge als Argument übergeben.
Die isCreatable() -Methode gibt true zurück, wenn die Zeichenfolge in einen numerischen Wert konvertiert werden kann, andernfalls false. Es unterstützt verschiedene Zahlenformate, einschließlich Ganzzahlen und reelle Zahlen sowie negative Werte.
Ein Beispiel für die Verwendung der NumberUtils-Methode.isCreatable():
import org.apache.commons.lang3.math.NumberUtils;public class NumberCheck >
In diesem Beispiel gibt die isCreatable() -Methode true für alle drei Zeilen zurück, da sie Zahlen sind. Wenn wir die Zeichenfolge "123abc" an die Methode übergeben würden, wäre das Ergebnis falsch, da es sich nicht um eine Zahl handelt.
Verwenden der NumberUtils-Methode.Mit isCreatable() können Sie einfach und effizient überprüfen, ob eine Zeichenfolge in Java eine Zahl ist, ohne komplexe Überprüfungen manuell schreiben zu müssen.
Verwenden der Scanner-Klasse
Hier ist ein Beispiel für die Verwendung der Scanner-Klasse, um eine Zeichenfolge auf eine Zahl zu überprüfen:
import java.util.Scanner;public class Main else if (scanner.hasNextDouble()) else >>
Mit der Scanner-Klasse können Sie effektiv überprüfen, ob eine Zeichenfolge in Java eine Zahl ist. Beachten Sie jedoch, dass die Scanner-Klasse bei der Verarbeitung großer Datenmengen langsam sein kann. In diesem Fall wird empfohlen, andere Methoden zur Überprüfung von Zeichenfolgen auf eine Zahl zu verwenden, z. B. die Methoden parseInt() und parseDouble() der Integer- und Double-Klasse.
Testen mit der try-catch-Methode
Sie können den folgenden Code verwenden, um eine Zeichenfolge auf eine Zahl zu überprüfen:
try catch (NumberFormatException e)/ строка не является числомSystem.out.println("Строка не является числом.");>
In diesem Code versuchen wir, die Zeichenfolge "123" mit einer Methode in eine Ganzzahl zu konvertieren Integer.parseInt(). Wenn die Konvertierung erfolgreich ist, wird die Zeichenfolge als Zahl betrachtet. Wenn eine Ausnahme auftritt NumberFormatException dann ist die Zeichenfolge keine Zahl.
Die Validierung mit der try-catch-Methode kann nützlich sein, wenn Sie Ausnahmesituationen behandeln möchten, die auftreten, wenn eine Zeichenfolge nicht korrekt in eine Zahl konvertiert wird.
Die Methode StringUtils.isNumeric()
Die Methode StringUtils.IsNumeric() gibt true zurück , wenn die Zeichenfolge nur aus Ziffern besteht, andernfalls false. Es ignoriert Leerzeichen am Anfang und Ende der Zeile.
Betrachten Sie ein Beispiel für die Verwendung der StringUtils-Methode.isNumeric() :
| Eingabezeichenfolge | Ergebnis |
|---|---|
| "12345" | true |
| "-123" | false |
| "12.34" | false |
| "123 456" | false |
Der Vorteil der StringUtils-Methode.IsNumeric() ist seine Einfachheit und Benutzerfreundlichkeit. Es bietet eine zuverlässige Validierung, die verschiedene Szenarien berücksichtigt.
Es sollte jedoch beachtet werden, dass die Methode StringUtils.IsNumeric() unterstützt keine negativen Zahlen, Dezimalzahlen und Tausendertrennzeichen. Wenn Sie alle diese Fälle überprüfen möchten, müssen Sie möglicherweise andere Methoden verwenden oder zusätzliche Methoden aus der Klasse StringUtils verwenden.
Validierung mithilfe der NumberFormat-Methode.parse()
Verwenden der NumberFormat-Methode.parse() Sie müssen zuerst ein Objekt der NumberFormat-Klasse mit der statischen getInstance() -Methode erstellen und das gewünschte lokale Zahlenformat angeben. Rufen Sie dann die parse() -Methode für dieses Objekt auf und übergeben Sie die zu überprüfende Zeichenfolge an dieses Objekt.
Ein Beispiel für die Verwendung der NumberFormat-Methode.parse(), um eine Zeichenfolge auf eine Zahl zu überprüfen:
In diesem Beispiel enthält die Variable input eine Zeichenfolge, die auf eine Zahl überprüft werden soll. Wenn eine Zeichenfolge in eine Zahl konvertiert werden kann, gibt das Programm die Meldung "Zeichenfolge ist eine Zahl" aus, andernfalls wird die Meldung "Zeichenfolge ist keine Zahl" ausgegeben.
Die NumberFormat-Methode.parse() hat einige Nachteile. Zum Beispiel kann es keine Zahlen verarbeiten, die ein Trennzeichen für Zifferngruppen oder ein Währungszeichen enthalten. Darüber hinaus ist die Methode im Vergleich zu anderen Möglichkeiten, eine Zeichenfolge auf eine Zahl zu überprüfen, relativ langsam. Wenn Sie also eine schnelle und genaue Überprüfung der Zahl benötigen, sollten Sie einen anderen Ansatz in Betracht ziehen.
Verwenden von Reflektion und IsAssignableFrom() -Methode
Zuerst müssen Sie ein Objekt vom Typ Class für eine Klasse abrufen, die einer ganzzahligen oder materiellen Zahl entspricht, indem Sie die Class-Methode verwenden.forName(). Sie können beispielsweise den folgenden Code für eine ganzzahlige Zahl verwenden:
Class integerClass = Class.forName("java.lang.Integer");
Als nächstes können Sie die IsAssignableFrom() -Methode verwenden, um zu überprüfen, ob eine Zeichenfolge in ein Objekt der angegebenen Klasse oder Schnittstelle konvertiert werden kann:
boolean isNumber = integerClass.isAssignableFrom(string.getClass());
Wenn die Variable isNumber true ist, kann die Zeichenfolge in eine Ganzzahl konvertiert werden. Ebenso kann die Double-Klasse für eine reelle Zahl verwendet werden:
Class doubleClass = Class.forName("java.lang.Double");boolean isNumber = doubleClass.isAssignableFrom(string.getClass());
Die Verwendung von Reflektion und der IsAssignableFrom() -Methode ermöglicht es daher, effektiv zu überprüfen, ob eine Zeichenfolge eine Zahl eines bestimmten Typs in Java ist.