CodeGym /Java Blog /Random-IT /Metodo Java isDigit
John Squirrels
Livello 41
San Francisco

Metodo Java isDigit

Pubblicato nel gruppo Random-IT
I metodi che restituiscono un valore booleano il più delle volte iniziano con la parola "is" e significano verificare se l'elemento controllato corrisponde a una determinata condizione. Il metodo Character.isDigit() , di cui parleremo in questo articolo, determina se il valore char specificato è una cifra.

Sintassi del metodo Java isDigit

java.lang.Character.isDigit(char ch) è un metodo integrato in Java che determina se il carattere specificato è una cifra o meno. Cosa significa "una cifra" nel contesto della programmazione Java? Secondo la definizione in Java Doc, se il metodo Character.getType(ch) restituisce la costante DECIMAL_DIGIT_NUMBER , il carattere è una cifra. Alcuni intervalli di caratteri Unicode che contengono cifre sono i seguenti:
  • Da '\u0030' a '\u0039' sono cifre ISO-LATIN-1 (da '0' a '9')

  • Da '\u0660' a '\u0669' sono cifre arabo-indiche

  • Da '\u06F0' a'\u06F9' sono cifre arabo-indiche estese

  • Da '\u0966' a '\u096F' sono cifre Devanagari

  • Da \uFF10' a '\uFF19'sono cifre a larghezza intera

Esistono anche altri intervalli contenenti cifre. Tuttavia, molto spesso useremo cifre da '\u0030' a '\u0039'. La sintassi di Character.isDigit() è qui:

public static boolean isDigit(char myChar)
Dove myChar è il carattere da testare. Questo metodo restituisce true se il carattere è una cifra e false in caso contrario. Secondo il metodo Java doc isDigit(char myChar) non può gestire caratteri supplementari. Per supportare tutti i caratteri Unicode, inclusi i caratteri supplementari, il programmatore dovrebbe utilizzare il metodo isDigit(int) . Sembra allo stesso modo, ma, grazie a OOP e al supporto del polimorfismo, funziona in modo leggermente diverso. public static boolean isDigit(int codePoint) determina se il carattere specificato (punto di codice Unicode) è una cifra. Nella terminologia di codifica dei caratteri, un punto di codice o posizione di codice è un valore numerico che corrisponde a un carattere specifico.isDigit(int codePoint) restituisce anche true se il carattere è una cifra e false in caso contrario.

Esempio semplice del metodo Java isDigit

Proviamo a lavorare con il metodo Java Characher.isDigit() . Prima di tutto scriveremo un semplice programma per dimostrare il metodo.

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));
   }
}
L'uscita è:
il carattere 5 è una cifra? vero è char ua cifra? false è char ua cifra? VERO

Metodo Java isDigit, esempio un po' più complicato

Proviamo a usare Character.isDigit()in un problema di vita più interessante e reale. Esiste un metodo di compressione chiamato Run Length Encoding o RLE in breve. Run Length Encoding è un algoritmo di compressione dei dati che sostituisce i caratteri ripetuti (serie) con un carattere e il numero delle sue ripetizioni. Una serie è una sequenza composta da diversi caratteri identici. Durante la codifica (impacchettamento, compressione), una stringa di caratteri identici che compongono una serie viene sostituita da una stringa contenente il carattere ripetuto stesso e il numero delle sue ripetizioni. Quindi, se hai una stringa "hhhhhorrribleeee", la codifica della lunghezza della corsa dà un risultato: h5or3ible5. Se decodifichi la stringa, dovresti controllare in sequenza se hai un carattere cifra o non cifra, e se hai una cifra, è il momento di ottenere qual è la cifra. A proposito, tutti voi conoscete i file JPEG. Questo formato utilizza una variante della codifica run-length in uno schema diagonale su dati quantizzati. La variante è che solo la lunghezza delle esecuzioni di valori zero viene codificata e tutti gli altri valori vengono codificati come se stessi. Nell'esempio seguente, utilizziamo ilMetodo Character.isDigit(char ch) per decodificare una stringa codificata con la codifica Run-length. Se sei interessato, prova a completare il programma, o meglio, crea la sua prima parte e scrivi un metodo per codificare RLE una stringa, oltre a leggere una stringa da un file. Oppure inserendo manualmente una stringa dalla console controllando la correttezza dell'input. Ecco un esempio di decodifica 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"));
   }
}
L'uscita è:
CCCecddffffffff
Potresti aver notato che non stiamo usando una String , ma una StringBuilder . Perché? Il fatto è che String è immutabile e incrementiamo il contatore e ogni volta verrà creata una nuova stringa. Abbiamo anche usato il metodo Character.digit nel programma. java.lang.Character.digit() è un metodo che restituisce il valore numerico del carattere ch nel sistema numerico specificato. Se la base non è nell'intervallo MIN_RADIX <= base <= MAX_RADIX o se ch non è una cifra valida nella base specificata, il metodo restituisce -1.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION