Methoden die een booleaanse waarde retourneren, beginnen meestal met het woord "is" en betekenen controleren of het gecontroleerde element aan een bepaalde voorwaarde voldoet. De methode Character.isDigit() die we in dit artikel gaan bespreken, bepaalt of de opgegeven char-waarde een cijfer is.
Java is de syntaxis van de Digit-methode
java.lang.Character.isDigit(char ch) is een ingebouwde methode in Java die bepaalt of het opgegeven teken een cijfer is of niet. Wat betekent "een cijfer" in de Java-programmeercontext? Volgens de definitie in Java Doc is het teken een cijfer als de methode Character.getType(ch) de constante DECIMAL_DIGIT_NUMBER retourneert. Sommige Unicode-tekenreeksen die cijfers bevatten, zijn de volgende:-
Van '\u0030' tot en met '\u0039' zijn ISO-LATIN-1 cijfers ('0' tot en met '9')
-
Van '\u0660' tot en met '\u0669' zijn Arabisch-Indische cijfers
-
Van '\u06F0' tot en met '\u06F9' zijn uitgebreide Arabisch-Indische cijfers
-
Van '\u0966' tot en met '\u096F' zijn Devanagari-cijfers
-
Van \uFF10' tot en met '\uFF19' zijn volledige cijfers
public static boolean isDigit(char myChar)
Waar myChar het karakter is dat getest moet worden. Deze methode retourneert true als het teken een cijfer is en anders false . Volgens de Java doc kan de methode isDigit(char myChar) geen aanvullende tekens verwerken. Om alle Unicode-tekens te ondersteunen, inclusief aanvullende tekens, moet de programmeur de isDigit(int) -methode gebruiken. Het ziet er hetzelfde uit, maar dankzij OOP en polymorfisme-ondersteuning werkt het een beetje anders. public static boolean isDigit(int codePoint) bepaalt of het opgegeven teken (Unicode-codepunt) een cijfer is. In de terminologie voor tekencodering is een codepunt of codepositie een numerieke waarde die overeenkomt met een specifiek teken.isDigit(int codePoint) retourneert ook waar als het teken een cijfer is en anders onwaar .
Java isDigit methode eenvoudig voorbeeld
Laten we proberen te werken met de Java Characher.isDigit() methode. Allereerst gaan we een eenvoudig programma schrijven om de methode te demonstreren.
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));
}
}
De uitvoer is:
is teken 5 een cijfer? waar is char ua cijfer? false is char ua cijfer? WAAR
Java isDigit-methode, een iets gecompliceerder voorbeeld
Laten we proberen Character.isDigit() te gebruikenin een interessanter en realistischer probleem. Er is een compressiemethode genaamd Run Length Encoding of kortweg RLE. Run Length Encoding is een algoritme voor gegevenscompressie dat herhaalde tekens (reeksen) vervangt door één teken en het aantal herhalingen. Een reeks is een reeks bestaande uit meerdere identieke karakters. Bij het coderen (inpakken, comprimeren) wordt een reeks identieke tekens waaruit een reeks bestaat, vervangen door een reeks die het herhalende teken zelf en het aantal herhalingen ervan bevat. Dus als je een string "hhhhhorrribleeeee" hebt, geeft runlengte-codering een resultaat: h5or3ible5. Als je de string decodeert, moet je achtereenvolgens controleren of je een cijfer of een niet-cijferig teken hebt, en als je een cijfer hebt, is het tijd om te achterhalen wat het cijfer is. Trouwens, jullie kennen allemaal JPEG-bestanden. Dit formaat gebruikt een variant van run-length-codering in een diagonaal patroon over gekwantiseerde gegevens. De variant is dat alleen de lengte van runs met nulwaarden wordt gecodeerd en dat alle andere waarden als zichzelf worden gecodeerd. In onderstaand voorbeeld gebruiken we deCharacter.isDigit(char ch) methode om een string te decoderen die is gecodeerd met Run-length-codering. Als je geïnteresseerd bent, probeer dan het programma te voltooien, of liever, maak het eerste deel en schrijf een methode voor RLE-codering van een string, en ook voor het lezen van een string uit een bestand. Of handmatig een string invoeren vanuit de console terwijl de juistheid van de invoer wordt gecontroleerd. Hier is een voorbeeld van RLE-decodering:
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"));
}
}
De uitvoer is:
CCCecddffffffff
Het is je misschien opgevallen dat we geen String gebruiken , maar een StringBuilder . Waarom? Het feit is dat String onveranderlijk is, en we verhogen de teller, en elke keer wordt er een nieuwe string gemaakt. We hebben ook de methode Character.digit in het programma gebruikt. java.lang.Character.digit() is een methode die de numerieke waarde retourneert van het teken ch in het opgegeven getallenstelsel. Als het grondtal niet in het bereik MIN_RADIX <= grondtal <= MAX_RADIX ligt, of als ch geen geldig cijfer is in het opgegeven grondtal, retourneert de methode -1.
GO TO FULL VERSION