CodeGym /Java blogg /Slumpmässig /Java isDigit-metoden
John Squirrels
Nivå
San Francisco

Java isDigit-metoden

Publicerad i gruppen
Metoder som returnerar ett booleskt värde börjar oftast med ordet "är" och betyder att kontrollera om elementet som kontrolleras matchar ett visst villkor. Character.isDigit () -metoden, som vi kommer att diskutera i den här artikeln, avgör om det angivna char-värdet är en siffra.

Java isDigit-metodens syntax

java.lang.Character.isDigit(char ch) är en inbyggd metod i Java som avgör om det angivna tecknet är en siffra eller inte. Vad betyder "en siffra" i Java-programmeringssammanhang? Enligt definitionen i Java Doc, om metoden Character.getType(ch) returnerar konstant DECIMAL_DIGIT_NUMBER , så är tecknet en siffra. Några Unicode-teckenintervall som innehåller siffror är följande:
  • Från '\u0030' till '\u0039' är ISO-LATIN-1-siffror ('0' till '9')

  • Från '\u0660' till '\u0669' är arabisk-indiska siffror

  • Från '\u06F0' till'\u06F9' är utökade arabiska-indiska siffror

  • Från '\u0966' till '\u096F' är devanagari-siffror

  • Från \uFF10' till '\uFF19'är fullbreddssiffror

Det finns också några andra intervall som innehåller siffror. Men oftast kommer vi att använda siffror från '\u0030' till '\u0039'. Syntaxen för Character.isDigit() är här:

public static boolean isDigit(char myChar)
Där myChar är karaktären som ska testas. Denna metod returnerar sant om tecknet är en siffra och annars falskt . Enligt Java doc kan isDigit(char myChar) -metoden inte hantera tilläggstecken. För att stödja alla Unicode-tecken, inklusive tilläggstecken, bör programmeraren använda metoden isDigit(int) . Det ser ut på samma sätt, men tack vare OOP och polymorfism fungerar stöd lite annorlunda. public static boolean isDigit(int codePoint) avgör om det angivna tecknet (Unicode-kodpunkt) är en siffra. I teckenkodningsterminologi är en kodpunkt eller kodposition ett numeriskt värde som motsvarar ett specifikt tecken.isDigit(int codePoint) returnerar också sant om tecknet är en siffra och annars falskt .

Java isDigit-metoden enkelt exempel

Låt oss försöka arbeta med Java Characher.isDigit()- metoden. Först och främst ska vi skriva ett enkelt program för att demonstrera metoden.

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));
   }
}
Utgången är:
är char 5 en siffra? sant är char u en siffra? falskt är char u en siffra? Sann

Java isDigit-metoden, ett lite mer komplicerat exempel

Låt oss försöka använda Character.isDigit()i ett mer intressant och verkligt problem. Det finns en komprimeringsmetod som kallas Run Length Encoding eller förkortat RLE. Run Length Encoding är en datakomprimeringsalgoritm som ersätter upprepade tecken (serier) med ett tecken och antalet repetitioner. En serie är en sekvens som består av flera identiska karaktärer. Vid kodning (packning, komprimering) ersätts en sträng med identiska tecken som utgör en serie med en sträng som innehåller själva det upprepande tecknet och antalet repetitioner. Så om du har en sträng "hhhhhorrribleeee" ger körlängdskodning ett resultat: h5or3ible5. Om du avkodar strängen bör du sekventiellt kontrollera om du har ett siffra eller icke-siffrigt tecken, och om du har en siffra är det dags att ta reda på vad siffran är. Förresten, alla ni känner till JPEG-filer. Detta format använder en variant av run-length-kodning i ett diagonalt mönster över kvantiserade data. Varianten är att endast längden av körningar med nollvärden kodas och alla andra värden kodas som sig själva. I exemplet nedan använder viCharacter.isDigit(char ch) metod för att avkoda en sträng kodad med Run-length-kodning. Om du är intresserad, försök att slutföra programmet, eller snarare skapa dess första del och skriv en metod för RLE-kodning av en sträng, samt att läsa en sträng från en fil. Eller manuellt mata in en sträng från konsolen samtidigt som du kontrollerar att inmatningen är korrekt. Här är ett exempel på RLE-avkodning:

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"));
   }
}
Utgången är:
CCCecddffffffff
Du kanske har märkt att vi inte använder en String , utan en StringBuilder . Varför? Faktum är att String är oföränderlig, och vi ökar räknaren, och varje gång kommer en ny sträng att skapas. Vi använde även metoden Character.digit i programmet. java.lang.Character.digit() är en metod som returnerar det numeriska värdet för tecknet ch i det angivna talsystemet. Om basen inte är i intervallet MIN_RADIX <= bas <= MAX_RADIX, eller om ch inte är en giltig siffra i den angivna basen, returnerar metoden -1.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION