CodeGym /Blog Java /Random-PL /Metoda isDigit w Javie
Autor
Alex Vypirailenko
Java Developer at Toshiba Global Commerce Solutions

Metoda isDigit w Javie

Opublikowano w grupie Random-PL
Metody zwracające wartość logiczną najczęściej zaczynają się od słowa „is” i oznaczają sprawdzenie, czy sprawdzany element spełnia określony warunek. Metoda Character.isDigit() , którą omówimy w tym artykule, określa, czy podana wartość znaku jest cyfrą.

Składnia metody Java isDigit

java.lang.Character.isDigit(char ch) to wbudowana metoda w Javie, która określa, czy określony znak jest cyfrą, czy nie. Co oznacza „cyfra” w kontekście programowania w Javie? Zgodnie z definicją w Java Doc, jeśli metoda Character.getType(ch) zwraca stałą DECIMAL_DIGIT_NUMBER , to znak jest cyfrą. Niektóre zakresy znaków Unicode zawierające cyfry to:
  • Od „\u0030” do „\u0039” to cyfry ISO-LATIN-1 („0” do „9”)

  • Od „\u0660” do „\u0669” to cyfry arabsko-indyjskie

  • Od „\u06F0” do „\u06F9” to rozszerzone cyfry arabsko-indyjskie

  • Od „\u0966” do „\u096F” to cyfry dewanagari

  • Od \uFF10' do '\uFF19'są to cyfry o pełnej szerokości

Istnieją również inne zakresy zawierające cyfry. Jednak najczęściej będziemy używać cyfr od '\u0030' do '\u0039'. Składnia metody Character.isDigit() jest następująca:

public static boolean isDigit(char myChar)
Gdzie myChar to znak do przetestowania. Ta metoda zwraca true , jeśli znak jest cyfrą i false w przeciwnym razie. Zgodnie z dokumentem Java metoda isDigit(char myChar) nie obsługuje znaków dodatkowych. Aby obsługiwać wszystkie znaki Unicode, w tym znaki dodatkowe, programista powinien użyć metody isDigit(int) . Wygląda to tak samo, ale dzięki obsłudze OOP i polimorfizmu działa trochę inaczej. public static boolean isDigit(int codePoint) określa, czy określony znak (punkt kodowy Unicode) jest cyfrą. W terminologii kodowania znaków punkt kodowy lub pozycja kodowa to wartość liczbowa odpowiadająca określonemu znakowi.isDigit(int codePoint) również zwraca true , jeśli znak jest cyfrą, a false w przeciwnym razie.

Prosty przykład metody Java isDigit

Spróbujmy pracować z metodą Java Characher.isDigit() . Przede wszystkim napiszemy prosty program demonstrujący tę metodę.

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));
   }
}
Dane wyjściowe to:
czy znak 5 jest cyfrą? prawda to cyfra char ua? fałsz to cyfra char ua? PRAWDA

Metoda Java isDigit, nieco bardziej skomplikowany przykład

Spróbujmy użyć Character.isDigit()w bardziej interesującym i realnym problemie życiowym. Istnieje metoda kompresji o nazwie Run Length Encoding lub w skrócie RLE. Run Length Encoding to algorytm kompresji danych, który zastępuje powtarzające się znaki (serie) jednym znakiem i liczbą jego powtórzeń. Seria to sekwencja składająca się z kilku identycznych znaków. Podczas kodowania (pakowania, kompresji) ciąg identycznych znaków składających się na serię jest zastępowany ciągiem zawierającym sam powtarzający się znak i liczbę jego powtórzeń. Więc jeśli masz ciąg „hhhhhorrribleeee”, kodowanie długości przebiegu daje wynik: h5or3ible5. Jeśli odkodujesz ciąg znaków, powinieneś po kolei sprawdzić, czy masz cyfrę, czy znak niebędący cyfrą, a jeśli masz cyfrę, nadszedł czas, aby dowiedzieć się, jaka to cyfra. Nawiasem mówiąc, wszyscy znacie pliki JPEG. Ten format wykorzystuje wariant kodowania długości serii we wzorcu ukośnym na skwantyzowanych danych. Wariant polega na tym, że kodowana jest tylko długość przebiegów wartości zerowych, a wszystkie inne wartości są kodowane jako one same. W poniższym przykładzie używamyMetoda Character.isDigit(char ch) służąca do dekodowania łańcucha zakodowanego przy użyciu kodowania Run-length. Jeśli jesteś zainteresowany, spróbuj ukończyć program, a raczej stworzyć jego pierwszą część i napisać metodę RLE do kodowania łańcucha znaków, a także odczytywania ciągu znaków z pliku. Lub ręcznie wpisując ciąg znaków z konsoli, sprawdzając jednocześnie poprawność wprowadzonych danych. Oto przykład dekodowania RLE:

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"));
   }
}
Dane wyjściowe to:
CCCecddffffffff
Być może zauważyłeś, że nie używamy String , ale StringBuilder . Dlaczego? Faktem jest, że String jest niezmienny, a my zwiększamy licznik i za każdym razem tworzony jest nowy łańcuch. W programie wykorzystaliśmy również metodę Character.digit . java.lang.Character.digit() to metoda, która zwraca wartość liczbową znaku ch w określonym systemie liczbowym. Jeśli podstawa nie należy do zakresu MIN_RADIX <= podstawa <= MAX_RADIX lub jeśli ch nie jest prawidłową cyfrą w określonej podstawie, metoda zwraca -1.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION