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
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.
GO TO FULL VERSION