Ang mga pamamaraan na nagbabalik ng boolean na halaga ay kadalasang nagsisimula sa salitang "ay" at nangangahulugan ng pagsuri kung ang elementong sinusuri ay tumutugma sa isang partikular na kundisyon. Ang Character.isDigit() na pamamaraan, na tatalakayin natin sa artikulong ito, ay tumutukoy kung ang tinukoy na halaga ng char ay isang digit.

Java isDigit method syntax

Ang java.lang.Character.isDigit(char ch) ay isang built-in na paraan sa Java na tumutukoy kung ang tinukoy na character ay isang digit o hindi. Ano ang ibig sabihin ng "isang digit" sa konteksto ng Java programming? Ayon sa kahulugan sa Java Doc, kung ang paraan ng Character.getType(ch) ay nagbabalik ng DECIMAL_DIGIT_NUMBER na pare-pareho, kung gayon ang character ay isang digit. Ang ilang mga hanay ng character na Unicode na naglalaman ng mga digit ay ang susunod:
  • Mula sa '\u0030' hanggang '\u0039' ay mga ISO-LATIN-1 digit ('0' hanggang '9')

  • Mula sa '\u0660' hanggang '\u0669' ay mga Arabic-Indic na digit

  • Mula sa '\u06F0' hanggang'\u06F9' ay Extended Arabic-Indic digit

  • Mula sa '\u0966' hanggang sa '\u096F' ay mga Devanagari digit

  • Mula sa \uFF10' hanggang '\uFF19'ay mga Fullwidth na digit

Mayroon ding ilang iba pang mga hanay na naglalaman ng mga digit. Gayunpaman, kadalasan ay gagamit kami ng mga digit mula sa '\u0030' hanggang '\u0039'. Ang syntax ng Character.isDigit() ay narito:

public static boolean isDigit(char myChar)
Kung saan ang myChar ang karakter na susubukin. Ang pamamaraang ito ay nagbabalik ng true kung ang character ay isang digit at false kung hindi. Ayon sa Java doc isDigit(char myChar) na pamamaraan ay hindi maaaring humawak ng mga pandagdag na character. Upang suportahan ang lahat ng mga character na Unicode, kabilang ang mga karagdagang character, dapat gamitin ng programmer ang isDigit(int) na paraan. Ito ay mukhang pareho, ngunit, salamat sa OOP at polymorphism na suporta ay gumagana nang medyo naiiba. Ang public static boolean isDigit(int codePoint) ay tumutukoy kung ang tinukoy na character (Unicode code point) ay isang digit. Sa terminolohiya ng pag-encode ng character, ang isang code point o posisyon ng code ay isang numerong halaga na tumutugma sa isang partikular na character.isDigit(int codePoint) ay nagbabalik din ng true kung ang character ay isang digit at false kung hindi.

Simpleng halimbawa ng Java isDigit method

Subukan nating magtrabaho kasama ang Java Characher.isDigit() na pamamaraan. Una sa lahat, magsusulat kami ng isang simpleng programa upang ipakita ang pamamaraan.

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));
   }
}
Ang output ay:
digit ba ang char 5? totoo ba ang char ua digit? false ang char ua digit? totoo

Java isDigit method, medyo mas kumplikadong halimbawa

Subukan nating gamitin ang Character.isDigit()sa isang mas kawili-wili at totoong problema sa buhay. Mayroong paraan ng compression na tinatawag na Run Length Encoding o RLE para sa maikli. Ang Run Length Encoding ay isang data compression algorithm na pinapalitan ang mga paulit-ulit na character (serye) ng isang character at ang bilang ng mga pag-uulit nito. Ang isang serye ay isang pagkakasunod-sunod na binubuo ng ilang magkakahawig na mga character. Kapag nag-e-encode (pag-iimpake, pag-compress), ang isang string ng magkaparehong mga character na bumubuo sa isang serye ay pinapalitan ng isang string na naglalaman ng umuulit na character mismo at ang bilang ng mga pag-uulit nito. Kaya kung mayroon kang string na "hhhhhorrribleeee" run length encoding ay nagbibigay ng resulta: h5or3ible5. Kung ide-decode mo ang string, dapat mong sunud-sunod na suriin kung mayroon kang isang digit o hindi digit na character, at kung mayroon kang isang digit, oras na upang makuha kung ano ang digit. Siyanga pala, lahat kayo ay may alam na JPEG file. Gumagamit ang format na ito ng variant ng run-length na encoding sa isang diagonal na pattern sa dami ng data. Ang variant ay ang haba lang ng pagtakbo ng mga zero na value ang naka-encode at lahat ng iba pang value ay naka-encode bilang kanilang mga sarili. Sa halimbawa sa ibaba, ginagamit namin angCharacter.isDigit(char ch) na paraan para mag-decode ng string na naka-encode sa Run-length na encoding. Kung interesado ka, subukang kumpletuhin ang programa, o sa halip, lumikha ng unang bahagi nito at magsulat ng isang paraan para sa pag-encode ng RLE ng isang string, pati na rin ang pagbabasa ng isang string mula sa isang file. O mano-manong pagpasok ng string mula sa console habang sinusuri ang kawastuhan ng input. Narito ang isang halimbawa ng RLE decoding:

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"));
   }
}
Ang output ay:
CCCecddffffffff
Maaaring napansin mo na hindi kami gumagamit ng String , ngunit isang StringBuilder . Bakit? Ang katotohanan ay ang String ay hindi nababago, at dinadagdagan namin ang counter, at sa bawat oras na isang bagong string ay malilikha. Ginamit din namin ang Character.digit na paraan sa programa. Ang java.lang.Character.digit() ay isang paraan na nagbabalik ng numeric na halaga ng character na ch sa tinukoy na sistema ng numero. Kung ang base ay wala sa hanay na MIN_RADIX <= base <= MAX_RADIX, o kung ang ch ay hindi wastong digit sa tinukoy na base, ang paraan ay nagbabalik -1.