CodeGym /Java Blog /Willekeurig /Java isDigit-methode
John Squirrels
Niveau 41
San Francisco

Java isDigit-methode

Gepubliceerd in de groep Willekeurig
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

Er zijn ook enkele andere reeksen die cijfers bevatten. Meestal gebruiken we echter cijfers van '\u0030' tot '\u0039'. De syntaxis van Character.isDigit() is hier:

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.
Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION