CodeGym /Java blog /Véletlen /Java isDigit metódus
John Squirrels
Szint
San Francisco

Java isDigit metódus

Megjelent a csoportban
Azok a módszerek, amelyek logikai értéket adnak vissza, leggyakrabban az „is” szóval kezdődnek, és annak ellenőrzését jelentik, hogy az ellenőrzött elem megfelel-e egy bizonyos feltételnek. A Character.isDigit() metódus, amelyet ebben a cikkben tárgyalunk, meghatározza, hogy a megadott char érték számjegy-e.

Java isDigit metódus szintaxisa

A java.lang.Character.isDigit(char ch) a Java beépített metódusa, amely meghatározza, hogy a megadott karakter számjegy-e vagy sem. Mit jelent a „számjegy” a Java programozási környezetben? A Java Doc definíciója szerint, ha a Character.getType(ch) metódus DECIMAL_DIGIT_NUMBER állandót ad vissza, akkor a karakter egy számjegy. Néhány számjegyet tartalmazó Unicode karaktertartomány a következő:
  • A „\u0030” és „\u0039” közötti ISO-LATIN-1 számjegyek („0” és „9” között)

  • „\u0660” és „\u0669” közötti arab-ind számjegyek

  • „\u06F0” és „\u06F9” közötti kiterjesztett arab-ind számjegyek

  • „\u0966” és „\u096F” között dévanagari számjegyek

  • A \uFF10' és '\uFF19' közötti számok teljes szélességű számjegyek

Vannak más számokat tartalmazó tartományok is. Leggyakrabban azonban „\u0030” és „\u0039” közötti számjegyeket fogunk használni. A Character.isDigit() szintaxisa itt található:

public static boolean isDigit(char myChar)
Ahol a myChar a tesztelendő karakter. Ez a metódus igaz értéket ad vissza , ha a karakter egy számjegy, egyébként pedig false értéket ad vissza. A Java doc szerint az isDigit(char myChar) metódus nem tud kiegészítő karaktereket kezelni. Az összes Unicode karakter támogatásához, beleértve a kiegészítő karaktereket is, a programozónak az isDigit(int) metódust kell használnia. Ugyanúgy néz ki, de az OOP-nak és a polimorfizmusnak köszönhetően a támogatás egy kicsit másképp működik. public static boolean isDigit(int codePoint) határozza meg, hogy a megadott karakter (Unicode kódpont) számjegy-e. A karakterkódolási terminológiában a kódpont vagy kódhely olyan numerikus érték, amely egy adott karakternek felel meg.Az isDigit(int codePoint) igaz értéket ad vissza , ha a karakter számjegy, egyébként pedig false értéket ad vissza .

Java isDigit módszer egyszerű példa

Próbáljunk meg dolgozni a Java Characher.isDigit() metódussal. Először is írunk egy egyszerű programot a módszer bemutatására.

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));
   }
}
A kimenet a következő:
a char 5 számjegy? igaz a char ua számjegy? false a char ua számjegy? igaz

Java isDigit metódus, egy kicsit bonyolultabb példa

Próbáljuk meg a Character.isDigit()egy érdekesebb és életszerűbb problémában. Létezik egy tömörítési módszer, az úgynevezett Run Length Encoding vagy röviden RLE. A Run Length Encoding egy adattömörítési algoritmus, amely az ismétlődő karaktereket (sorozatokat) egy karakterre és annak ismétlődéseinek számára cseréli. A sorozat több azonos karakterből álló sorozat. Kódoláskor (csomagolás, tömörítés) a sorozatot alkotó azonos karakterekből álló sztringet egy magát az ismétlődő karaktert és annak ismétlődéseinek számát tartalmazó sztring helyettesíti. Tehát ha van egy „hhhhhorrribleeee” karakterlánc, a futáshosszúságú kódolás a következő eredményt adja: h5or3ible5. Ha dekódolja a karakterláncot, szekvenciálisan ellenőriznie kell, hogy van-e számjegye vagy nem számjegyű karaktere, és ha van számjegye, akkor ideje kideríteni, hogy mi a számjegy. Egyébként mindenki ismeri a JPEG fájlokat. Ez a formátum a futáshosszúságú kódolás egy változatát használja átlós mintában a kvantált adatokon. A változat az, hogy csak a nulla értékek futásainak hossza kódolódik, és az összes többi érték önmagaként van kódolva. Az alábbi példában aCharacter.isDigit(char ch) metódus a Run-length kódolással kódolt karakterlánc dekódolására. Ha érdekli, próbálja meg befejezni a programot, vagy inkább készítse el az első részét, és írjon egy metódust egy karakterlánc RLE kódolásához, valamint egy karakterlánc fájlból való olvasásához. Vagy manuálisan írjon be egy karakterláncot a konzolból, miközben ellenőrizze a bevitel helyességét. Íme egy példa az RLE dekódolásra:

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"));
   }
}
A kimenet a következő:
CCCecddffffffff
Talán észrevetted, hogy nem String-et használunk , hanem StringBuilder- t . Miért? A helyzet az, hogy a karakterlánc megváltoztathatatlan, és növeljük a számlálót, és minden alkalommal új karakterlánc jön létre. A programban a Character.digit metódust is alkalmaztuk . A java.lang.Character.digit() egy metódus, amely a ch karakter numerikus értékét adja vissza a megadott számrendszerben. Ha az alap nincs a MIN_RADIX <= alap <= MAX_RADIX tartományban, vagy ha a ch nem érvényes számjegy a megadott bázisban, a metódus -1 értéket ad vissza.
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION