CodeGym /Java blog /Tilfældig /Java isDigit metode
John Squirrels
Niveau
San Francisco

Java isDigit metode

Udgivet i gruppen
Metoder, der returnerer en boolesk værdi, begynder oftest med ordet "er" og betyder at kontrollere, om det element, der kontrolleres, matcher en bestemt betingelse. Character.isDigit () -metoden, som vi vil diskutere i denne artikel, bestemmer, om den angivne char-værdi er et ciffer.

Java isDigit metode syntaks

java.lang.Character.isDigit(char ch) er en indbygget metode i Java, der bestemmer om det angivne tegn er et ciffer eller ej. Hvad betyder "et ciffer" i Java-programmeringssammenhæng? Ifølge definitionen i Java Doc, hvis Character.getType(ch) metoden returnerer DECIMAL_DIGIT_NUMBER konstant, så er tegnet et ciffer. Nogle Unicode-tegnområder, der indeholder cifre, er de næste:
  • Fra '\u0030' til og med '\u0039' er ISO-LATIN-1-cifre ('0' til og med '9')

  • Fra '\u0660' til og med '\u0669' er arabisk-indiske cifre

  • Fra '\u06F0' til og med'\u06F9' er udvidede arabisk-indiske cifre

  • Fra '\u0966' til og med '\u096F' er devanagari-cifre

  • Fra \uFF10' til og med '\uFF19'er cifre i fuld bredde

Der er også nogle andre områder, der indeholder cifre. Men oftest kommer vi til at bruge cifre fra '\u0030' til '\u0039'. Syntaksen for Character.isDigit() er her:

public static boolean isDigit(char myChar)
Hvor myChar er karakteren, der skal testes. Denne metode returnerer sand , hvis tegnet er et ciffer og ellers falsk . Ifølge Java doc kan isDigit(char myChar) metoden ikke håndtere supplerende tegn. For at understøtte alle Unicode-tegn, inklusive supplerende tegn, skal programmøren bruge isDigit(int) -metoden. Det ser ud på samme måde, men takket være OOP og polymorfi fungerer support en smule anderledes. public static boolean isDigit(int codePoint) bestemmer, om det angivne tegn (Unicode-kodepunkt) er et ciffer. I tegnkodningsterminologi er et kodepunkt eller kodeposition en numerisk værdi, der svarer til et bestemt tegn.isDigit(int codePoint) returnerer også sand , hvis tegnet er et ciffer og ellers falsk .

Java isDigit metode enkelt eksempel

Lad os prøve at arbejde med Java Characher.isDigit() metoden. Først og fremmest skal vi skrive et simpelt program for at demonstrere 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));
   }
}
Udgangen er:
er char 5 et ciffer? sandt er char u et ciffer? falsk er char u et ciffer? rigtigt

Java isDigit-metoden, et lidt mere kompliceret eksempel

Lad os prøve at bruge Character.isDigit()i et mere interessant og virkeligt problem. Der er en komprimeringsmetode kaldet Run Length Encoding eller RLE for kort. Run Length Encoding er en datakomprimeringsalgoritme, der erstatter gentagne tegn (serier) med ét tegn og antallet af dets gentagelser. En serie er en sekvens bestående af flere identiske karakterer. Ved kodning (pakning, komprimering) erstattes en streng af identiske tegn, der udgør en serie, af en streng, der indeholder selve det gentagende tegn og antallet af dets gentagelser. Så hvis du har en streng "hhhhhorrribleeee" giver løbelængdekodning et resultat: h5or3ible5. Hvis du afkoder strengen, bør du sekventielt tjekke, om du har et ciffer eller ikke-cifret tegn, og hvis du har et ciffer, er det tid til at få, hvad cifferet er. I øvrigt kender I alle til JPEG-filer. Dette format bruger en variant af run-længde-kodning i et diagonalt mønster over kvantiserede data. Varianten er, at kun længden af ​​kørsler med nulværdier kodes, og alle andre værdier kodes som sig selv. I eksemplet nedenfor bruger viCharacter.isDigit(char ch) metode til at afkode en streng kodet med Run-length-kodning. Hvis du er interesseret, så prøv at færdiggøre programmet, eller rettere, opret dets første del og skriv en metode til RLE-kodning af en streng, samt læsning af en streng fra en fil. Eller manuelt indtaste en streng fra konsollen, mens du kontrollerer korrektheden af ​​input. Her er et eksempel på RLE-afkodning:

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"));
   }
}
Udgangen er:
CCCecddffffffff
Du har måske bemærket, at vi ikke bruger en String , men en StringBuilder . Hvorfor? Faktum er, at String er uforanderlig, og vi øger tælleren, og hver gang vil en ny streng blive oprettet. Vi brugte også Character.digit -metoden i programmet. java.lang.Character.digit() er en metode, der returnerer den numeriske værdi af tegnet ch i det angivne talsystem. Hvis grundtallet ikke er i området MIN_RADIX <= base <= MAX_RADIX, eller hvis ch ikke er et gyldigt ciffer i den angivne base, returnerer metoden -1.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION