Metodele care returnează o valoare booleană încep cel mai adesea cu cuvântul „este” și înseamnă verificarea dacă elementul verificat corespunde unei anumite condiții. Metoda Character.isDigit() , pe care o vom discuta în acest articol, determină dacă valoarea specificată a caracterului este o cifră.

Sintaxa metodei Java isDigit

java.lang.Character.isDigit(char ch) este o metodă încorporată în Java care determină dacă caracterul specificat este o cifră sau nu. Ce înseamnă „o cifră” în contextul de programare Java? Conform definiției din Java Doc, dacă metoda Character.getType(ch) returnează constanta DECIMAL_DIGIT_NUMBER , atunci caracterul este o cifră. Unele intervale de caractere Unicode care conțin cifre sunt următoarele:
  • De la „\u0030” la „\u0039” sunt cifre ISO-LATIN-1 (de la „0” la „9”)

  • De la „\u0660” până la „\u0669” sunt cifre arabo-indice

  • De la „\u06F0” la „\u06F9” sunt cifrele arabe-indice extinse

  • De la „\u0966” la „\u096F” sunt cifre Devanagari

  • De la \uFF10” la „\uFF19”sunt cifre cu lățime completă

Există și alte intervale care conțin cifre. Cu toate acestea, cel mai adesea vom folosi cifre de la „\u0030” la „\u0039”. Sintaxa lui Character.isDigit() este aici:

public static boolean isDigit(char myChar)
Unde myChar este personajul care trebuie testat. Această metodă returnează adevărat dacă caracterul este o cifră și fals în caz contrar. Conform documentului Java isDigit(char myChar) metoda nu poate gestiona caractere suplimentare. Pentru a accepta toate caracterele Unicode, inclusiv caracterele suplimentare, programatorul ar trebui să folosească metoda isDigit(int) . Arată la fel, dar datorită suportului OOP și polimorfism funcționează puțin diferit. public static boolean isDigit(int codePoint) determină dacă caracterul specificat (punct de cod Unicode) este o cifră. În terminologia de codificare a caracterelor, un punct de cod sau o poziție de cod este o valoare numerică care corespunde unui anumit caracter.isDigit(int codePoint) returnează și adevărat dacă caracterul este o cifră și fals în caz contrar.

Exemplu simplu al metodei Java isDigit

Să încercăm să lucrăm cu metoda Java Characher.isDigit() . Mai întâi de toate vom scrie un program simplu pentru a demonstra metoda.

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));
   }
}
Ieșirea este:
este char 5 o cifră? adevărat este char o cifră? false este char o cifră? Adevărat

Metoda Java isDigit, un exemplu puțin mai complicat

Să încercăm să folosim Character.isDigit()într-o problemă mai interesantă și mai reală. Există o metodă de compresie numită Run Length Encoding sau RLE pe scurt. Run Length Encoding este un algoritm de comprimare a datelor care înlocuiește caracterele repetate (seria) cu un caracter și numărul de repetări ale acestuia. O serie este o secvență formată din mai multe caractere identice. La codificare (ambalare, comprimare), un șir de caractere identice care alcătuiesc o serie este înlocuit cu un șir care conține caracterul care se repetă însuși și numărul repetărilor acestuia. Deci, dacă aveți un șir „hhhhhorrribleeee”, codificarea lungimii de rulare dă un rezultat: h5or3ible5. Dacă decodați șirul, ar trebui să verificați succesiv dacă aveți o cifră sau un caracter fără cifre, iar dacă aveți o cifră, este timpul să aflați care este cifra. Apropo, toți știți fișierele JPEG. Acest format folosește o variantă de codificare a lungimii de rulare într-un model diagonal peste date cuantificate. Varianta este că numai lungimea rundelor de valori zero sunt codificate și toate celelalte valori sunt codificate ca ele însele. În exemplul de mai jos, folosimMetoda Character.isDigit(char ch) pentru a decoda un șir codificat cu codificare Run-length. Dacă sunteți interesat, încercați să finalizați programul sau, mai degrabă, creați prima parte a acestuia și scrieți o metodă pentru codificarea RLE a unui șir, precum și citirea unui șir dintr-un fișier. Sau introducerea manuală a unui șir din consolă în timp ce se verifică corectitudinea intrării. Iată un exemplu de decodare 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"));
   }
}
Ieșirea este:
CCCecddffffffff
Poate ați observat că nu folosim un String , ci un StringBuilder . De ce? Faptul este că String este imuabil și creștem contorul și de fiecare dată va fi creat un șir nou. Am folosit și metoda Character.digit în program. java.lang.Character.digit() este o metodă care returnează valoarea numerică a caracterului ch în sistemul numeric specificat. Dacă baza nu este în intervalul MIN_RADIX <= bază <= MAX_RADIX, sau dacă ch nu este o cifră validă în baza specificată, metoda returnează -1.