CodeGym /Java-Blog /Random-DE /Java isDigit-Methode
Autor
Alex Vypirailenko
Java Developer at Toshiba Global Commerce Solutions

Java isDigit-Methode

Veröffentlicht in der Gruppe Random-DE
Methoden, die einen booleschen Wert zurückgeben, beginnen meist mit dem Wort „ist“ und bedeuten die Prüfung, ob das überprüfte Element einer bestimmten Bedingung entspricht. Die Methode Character.isDigit() , die wir in diesem Artikel besprechen werden, bestimmt, ob der angegebene char-Wert eine Ziffer ist.

Syntax der Java-isDigit-Methode

java.lang.Character.isDigit(char ch) ist eine in Java integrierte Methode, die bestimmt, ob das angegebene Zeichen eine Ziffer ist oder nicht. Was bedeutet „eine Ziffer“ im Kontext der Java-Programmierung? Gemäß der Definition in Java Doc ist das Zeichen eine Ziffer, wenn die Methode Character.getType(ch) die Konstante DECIMAL_DIGIT_NUMBER zurückgibt. Einige Unicode-Zeichenbereiche, die Ziffern enthalten, sind die nächsten:
  • Von „\u0030“ bis „\u0039“ sind ISO-LATIN-1-Ziffern („0“ bis „9“).

  • Von „\u0660“ bis „\u0669“ sind arabisch-indische Ziffern

  • Von „\u06F0“ bis „\u06F9“ sind erweiterte arabisch-indische Ziffern

  • Von „\u0966“ bis „\u096F“ sind Devanagari-Ziffern

  • Von \uFF10 bis „\uFF19“ sind Ziffern voller Breite

Es gibt auch einige andere Bereiche, die Ziffern enthalten. Am häufigsten verwenden wir jedoch Ziffern von „\u0030“ bis „\u0039“. Die Syntax von Character.isDigit() ist hier:

public static boolean isDigit(char myChar)
Wobei myChar das zu testende Zeichen ist. Diese Methode gibt true zurück , wenn das Zeichen eine Ziffer ist, andernfalls false . Laut Java-Dokument kann die Methode isDigit(char myChar) keine Zusatzzeichen verarbeiten. Um alle Unicode-Zeichen, einschließlich Zusatzzeichen, zu unterstützen, sollte der Programmierer die Methode isDigit(int) verwenden . Es sieht genauso aus, funktioniert aber dank OOP- und Polymorphismus-Unterstützung etwas anders. public static boolean isDigit(int codePoint) bestimmt, ob das angegebene Zeichen (Unicode-Codepunkt) eine Ziffer ist. In der Zeichenkodierungsterminologie ist ein Codepunkt oder eine Codeposition ein numerischer Wert, der einem bestimmten Zeichen entspricht.isDigit(int codePoint) gibt auch true zurück , wenn das Zeichen eine Ziffer ist, andernfalls false .

Einfaches Beispiel für die Java-isDigit-Methode

Versuchen wir, mit der Java- Methode Characher.isDigit() zu arbeiten . Zunächst schreiben wir ein einfaches Programm, um die Methode zu demonstrieren.

public class isDigitTest {
//isDigit(char ch) simple example
   public static void main(String[] args)
   {

       //characters to check using isDigit Java method
       char myChar1 = '5', myChar2 = 'u', myChar3 = '0';

       // Function to check if the character
       // is digit or not, using isDigit() method
       System.out.println("is char " + myChar1 + " a digit? "
                       + Character.isDigit(myChar1));
       System.out.println(
               "is char " + myChar2 + " a digit? "
                       + Character.isDigit(myChar2));

       System.out.println(
               "is char " + myChar3 + " a digit? "
                       + Character.isDigit(myChar3));
   }
}
Die Ausgabe ist:
Ist Zeichen 5 eine Ziffer? wahr ist char eine Ziffer? Falsch ist das Zeichen eine Ziffer? WAHR

Java isDigit-Methode, ein etwas komplizierteres Beispiel

Versuchen wir, Character.isDigit() zu verwendenin einem interessanteren und realeren Problem. Es gibt eine Komprimierungsmethode namens Run Length Encoding, kurz RLE. Die Lauflängenkodierung ist ein Datenkomprimierungsalgorithmus, der wiederholte Zeichen (Serien) durch ein Zeichen und die Anzahl seiner Wiederholungen ersetzt. Eine Serie ist eine Folge, die aus mehreren identischen Zeichen besteht. Beim Kodieren (Packen, Komprimieren) wird eine Zeichenfolge identischer Zeichen, aus denen eine Reihe besteht, durch eine Zeichenfolge ersetzt, die das sich wiederholende Zeichen selbst und die Anzahl seiner Wiederholungen enthält. Wenn Sie also eine Zeichenfolge „hhhhhorrribleeee“ haben, liefert die Lauflängenkodierung ein Ergebnis: h5or3ible5. Wenn Sie die Zeichenfolge dekodieren, sollten Sie nacheinander prüfen, ob Sie eine Ziffer oder ein nichtstelliges Zeichen haben. Wenn Sie eine Ziffer haben, ist es an der Zeit, herauszufinden, um welche Ziffer es sich handelt. Ihr kennt übrigens alle JPEG-Dateien. Dieses Format verwendet eine Variante der Lauflängenkodierung in einem diagonalen Muster über quantisierte Daten. Die Variante besteht darin, dass nur die Länge der Läufe von Nullwerten codiert wird und alle anderen Werte als sie selbst codiert werden. Im folgenden Beispiel verwenden wir dieCharacter.isDigit(char ch) -Methode zum Dekodieren einer mit der Lauflängenkodierung kodierten Zeichenfolge. Wenn Sie interessiert sind, versuchen Sie, das Programm zu vervollständigen, oder besser gesagt, seinen ersten Teil zu erstellen und eine Methode zum RLE-Codieren eines Strings sowie zum Lesen eines Strings aus einer Datei zu schreiben. Oder geben Sie manuell eine Zeichenfolge über die Konsole ein und überprüfen Sie dabei die Richtigkeit der Eingabe. Hier ist ein Beispiel für die RLE-Dekodierung:

public class RleTest {

   //the method to decode String using run-length encoding and 
//isDigit() method 
   private static String decodeRle(String encoded) {
       if (encoded.isBlank()) return "";
       StringBuilder result = new StringBuilder();
       int count = 0;
       char baseChar = encoded.charAt(0);
       for (int i = 1; i <= encoded.length(); i++) {
           char c = i == encoded.length() ? '$' : encoded.charAt(i);
//checking using isDigit() method           
if (Character.isDigit(c)) {
               count = count * 10 + Character.digit(c, 10);
           } else {
               do {
                   result.append(baseChar);
                   count--;
               } while (count > 0);
               count = 0;
               baseChar = c;
           }
       }
       return result.toString();
   }
   
public static void main(String[] args) {
//here we are going to decode an RLE-encoded string 
       System.out.println(decodeRle("C3ecddf8"));
   }
}
Die Ausgabe ist:
CCCeddffffffff
Sie haben vielleicht bemerkt, dass wir keinen String verwenden , sondern einen StringBuilder . Warum? Tatsache ist, dass String unveränderlich ist und wir den Zähler erhöhen und jedes Mal ein neuer String erstellt wird. Wir haben im Programm auch die Methode Character.digit verwendet. java.lang.Character.digit() ist eine Methode, die den numerischen Wert des Zeichens ch im angegebenen Zahlensystem zurückgibt. Wenn die Basis nicht im Bereich MIN_RADIX <= Basis <= MAX_RADIX liegt oder wenn ch keine gültige Ziffer in der angegebenen Basis ist, gibt die Methode -1 zurück.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION