CodeGym /Blogue Java /Random-PT /Método Java isDigit
John Squirrels
Nível 41
San Francisco

Método Java isDigit

Publicado no grupo Random-PT
Os métodos que retornam um valor booleano geralmente começam com a palavra “é” e significam verificar se o elemento que está sendo verificado corresponde a uma determinada condição. O método Character.isDigit() , que discutiremos neste artigo, determina se o valor char especificado é um dígito.

Sintaxe do método Java isDigit

java.lang.Character.isDigit(char ch) é um método integrado em Java que determina se o caractere especificado é um dígito ou não. O que significa “um dígito” no contexto de programação Java? De acordo com a definição em Java Doc, se o método Character.getType(ch) retornar a constante DECIMAL_DIGIT_NUMBER , o caractere é um dígito. Alguns intervalos de caracteres Unicode que contêm dígitos são os seguintes:
  • De '\u0030' a '\u0039' são dígitos ISO-LATIN-1 ('0' a '9')

  • De '\u0660' a '\u0669' são dígitos árabe-índicos

  • De '\u06F0' a '\u06F9' são dígitos árabe-índicos estendidos

  • De '\u0966' até '\u096F' são dígitos Devanagari

  • De \uFF10' a '\uFF19' são dígitos de largura total

Existem também alguns outros intervalos contendo dígitos. No entanto, na maioria das vezes, usaremos dígitos de '\u0030' a '\u0039'. A sintaxe de Character.isDigit() está aqui:

public static boolean isDigit(char myChar)
Onde myChar é o personagem a ser testado. Este método retorna verdadeiro se o caractere for um dígito e falso caso contrário. De acordo com o documento Java, o método isDigit(char myChar) não pode lidar com caracteres suplementares. Para suportar todos os caracteres Unicode, incluindo caracteres suplementares, o programador deve usar o método isDigit(int) . Parece o mesmo, mas, graças ao suporte a OOP e polimorfismo, funciona um pouco diferente. public static boolean isDigit(int codePoint) determina se o caractere especificado (ponto de código Unicode) é um dígito. Na terminologia de codificação de caracteres, um ponto de código ou posição de código é um valor numérico que corresponde a um caractere específico.isDigit(int codePoint) também retorna true se o caractere for um dígito e false caso contrário.

Exemplo simples do método Java isDigit

Vamos tentar trabalhar com o método Java Characher.isDigit() . Primeiro vamos escrever um programa simples para demonstrar o método.

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));
   }
}
A saída é:
o char 5 é um digito? verdadeiro é char u dígito? false é char u dígito? verdadeiro

Método Java isDigit, exemplo um pouco mais complicado

Vamos tentar usar Character.isDigit()em um problema mais interessante e da vida real. Existe um método de compactação chamado Run Length Encoding ou RLE para abreviar. Run Length Encoding é um algoritmo de compressão de dados que substitui caracteres repetidos (séries) por um caractere e o número de suas repetições. Uma série é uma sequência composta por vários personagens idênticos. Ao codificar (empacotar, compactar), uma string de caracteres idênticos que compõem uma série é substituída por uma string contendo o próprio caractere repetido e o número de suas repetições. Portanto, se você tiver uma string “hhhhhorrribleeee”, a codificação de comprimento de execução fornecerá um resultado: h5or3ible5. Se você decodificar a string, deverá verificar sequencialmente se possui um caractere de dígito ou não dígito e, se tiver um dígito, é hora de obter qual é o dígito. A propósito, todos vocês conhecem arquivos JPEG. Este formato usa uma variante de codificação de comprimento de execução em um padrão diagonal sobre dados quantizados. A variante é que apenas o comprimento das execuções de valores zero são codificados e todos os outros valores são codificados como eles próprios. No exemplo abaixo, usamos oMétodo Character.isDigit(char ch) para decodificar uma string codificada com codificação Run-length. Se você estiver interessado, tente concluir o programa, ou melhor, crie sua primeira parte e escreva um método para codificar uma string RLE, bem como ler uma string de um arquivo. Ou inserindo manualmente uma string do console enquanto verifica a exatidão da entrada. Aqui está um exemplo de decodificação RLE:

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"));
   }
}
A saída é:
CCCecddffffffff
Você deve ter notado que não estamos usando uma String , mas sim um StringBuilder . Por que? O fato é que String é imutável, e incrementamos o contador, e cada vez uma nova string será criada. Também usamos o método Character.digit no programa. java.lang.Character.digit() é um método que retorna o valor numérico do caractere ch no sistema numérico especificado. Se a base não estiver no intervalo MIN_RADIX <= base <= MAX_RADIX, ou se ch não for um dígito válido na base especificada, o método retornará -1.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION