CodeGym /Java-blogg /Tilfeldig /Java isDigit-metoden
John Squirrels
Nivå
San Francisco

Java isDigit-metoden

Publisert i gruppen
Metoder som returnerer en boolsk verdi begynner oftest med ordet "er" og betyr å sjekke om elementet som sjekkes samsvarer med en bestemt betingelse. Character.isDigit () -metoden, som vi skal diskutere i denne artikkelen, avgjør om den angitte char-verdien er et siffer.

Java isDigit metode syntaks

java.lang.Character.isDigit(char ch) er en innebygd metode i Java som bestemmer om det angitte tegnet er et siffer eller ikke. Hva betyr "et siffer" i Java-programmeringssammenheng? I følge definisjonen i Java Doc, hvis Character.getType(ch) -metoden returnerer DECIMAL_DIGIT_NUMBER konstant, så er tegnet et siffer. Noen Unicode-tegnområder som inneholder sifre er de neste:
  • Fra «\u0030» til «\u0039» er ISO-LATIN-1-sifre («0» til «9»)

  • Fra «\u0660» til «\u0669» er arabisk-indiske sifre

  • Fra '\u06F0' til og med'\u06F9' er utvidede arabisk-indiske sifre

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

  • Fra \uFF10' til og med '\uFF19'er sifre i full bredde

Det er også noen andre områder som inneholder sifre. Imidlertid skal vi oftest bruke sifre fra '\u0030' til '\u0039'. Syntaksen til Character.isDigit() er her:

public static boolean isDigit(char myChar)
Hvor myChar er karakteren som skal testes. Denne metoden returnerer true hvis tegnet er et siffer og usant ellers. I følge Java doc kan ikke isDigit(char myChar) -metoden håndtere tilleggstegn. For å støtte alle Unicode-tegn, inkludert tilleggstegn, bør programmereren bruke isDigit(int) -metoden. Det ser ut på samme måte, men takket være OOP og polymorfisme fungerer støtte litt annerledes. public static boolean isDigit(int codePoint) bestemmer om det angitte tegnet (Unicode-kodepunkt) er et siffer. I tegnkodingsterminologi er et kodepunkt eller kodeposisjon en numerisk verdi som tilsvarer et spesifikt tegn.isDigit(int codePoint) returnerer også sant hvis tegnet er et siffer og ellers usant .

Java isDigit metode enkelt eksempel

La oss prøve å jobbe med Java Characher.isDigit() -metoden. Først av alt skal vi skrive et enkelt program for å 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));
   }
}
Utgangen er:
er røye 5 et siffer? sant er char u et siffer? usant er char u et siffer? ekte

Java isDigit-metoden, et litt mer komplisert eksempel

La oss prøve å bruke Character.isDigit()i et mer interessant og virkelighetsproblem. Det er en komprimeringsmetode kalt Run Length Encoding eller RLE for kort. Run Length Encoding er en datakomprimeringsalgoritme som erstatter gjentatte tegn (serier) med ett tegn og antall repetisjoner. En serie er en sekvens som består av flere identiske karakterer. Ved koding (pakking, komprimering) erstattes en streng med identiske tegn som utgjør en serie med en streng som inneholder selve det repeterende tegnet og antall repetisjoner. Så hvis du har en streng "hhhhhorrribleeee" gir kjørelengdekoding et resultat: h5or3ible5. Hvis du dekoder strengen, bør du sekvensielt sjekke om du har et siffer eller ikke-sifret tegn, og hvis du har et siffer, er det på tide å få hva sifferet er. Forresten, alle dere kjenner JPEG-filer. Dette formatet bruker en variant av løpelengdekoding i et diagonalt mønster over kvantiserte data. Varianten er at bare lengden på kjøringer med nullverdier er kodet og alle andre verdier er kodet som seg selv. I eksemplet nedenfor bruker viCharacter.isDigit(char ch) metode for å dekode en streng kodet med Run-length-koding. Hvis du er interessert, prøv å fullføre programmet, eller rettere sagt, lag den første delen og skriv en metode for RLE-koding av en streng, i tillegg til å lese en streng fra en fil. Eller legge inn en streng manuelt fra konsollen mens du sjekker inndataenes korrekthet. Her er et eksempel på RLE-dekoding:

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"));
   }
}
Utgangen er:
CCCecddffffffff
Du har kanskje lagt merke til at vi ikke bruker en String , men en StringBuilder . Hvorfor? Faktum er at String er uforanderlig, og vi øker telleren, og hver gang vil en ny streng bli opprettet. Vi brukte også Character.digit -metoden i programmet. java.lang.Character.digit() er en metode som returnerer den numeriske verdien til tegnet ch i det angitte tallsystemet. Hvis basen ikke er i området MIN_RADIX <= base <= MAX_RADIX, eller hvis ch ikke er et gyldig siffer i den angitte basen, returnerer metoden -1.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION