CodeGym /Blog Java /Ngẫu nhiên /Phương thức isDigit trong Java

Phương thức isDigit trong Java

Xuất bản trong nhóm
Các phương thức trả về giá trị boolean thường bắt đầu bằng từ “is” và có nghĩa là kiểm tra xem phần tử được kiểm tra có khớp với một điều kiện nhất định hay không. Phương thức Character.isDigit() mà chúng ta sẽ thảo luận trong bài viết này, xác định xem giá trị ký tự được chỉ định có phải là một chữ số hay không.

Cú pháp phương thức isDigit trong Java

java.lang. Character.isDigit(char ch) là một phương thức tích hợp sẵn trong Java để xác định xem ký tự được chỉ định có phải là một chữ số hay không. "Một chữ số" có nghĩa là gì trong bối cảnh lập trình Java? Theo định nghĩa trong Java Doc, nếu phương thức Character.getType(ch) trả về hằng số DECIMAL_DIGIT_NUMBER , thì ký tự đó là một chữ số. Một số phạm vi ký tự Unicode có chứa các chữ số là tiếp theo:
  • Từ '\u0030' đến '\u0039' là các chữ số ISO-LATIN-1 ('0' đến '9')

  • Từ '\u0660' đến '\u0669' là các chữ số Ả Rập-Ấn Độ

  • Từ '\u06F0' đến'\u06F9' là các chữ số Ả Rập-Ấn Độ mở rộng

  • Từ '\u0966' đến '\u096F' là các chữ số Devanagari

  • Từ \uFF10' đến '\uFF19'là các chữ số Toàn băng thông

Ngoài ra còn một số dãy khác chứa các chữ số. Tuy nhiên, thông thường chúng ta sẽ sử dụng các chữ số từ '\u0030' đến '\u0039'. Cú pháp của Character.isDigit() ở đây:

public static boolean isDigit(char myChar)
Trong đó myChar là ký tự được kiểm tra. Phương thức này trả về true nếu ký tự là một chữ số và false nếu ngược lại. Theo tài liệu Java, phương thức isDigit(char myChar) không thể xử lý các ký tự bổ sung. Để hỗ trợ tất cả các ký tự Unicode, kể cả các ký tự phụ, lập trình viên nên sử dụng phương thức isDigit(int) . Nó trông giống như vậy, nhưng nhờ OOP và hỗ trợ đa hình hoạt động hơi khác một chút. public static boolean isDigit(int codePoint) xác định xem ký tự đã chỉ định (điểm mã Unicode) có phải là một chữ số hay không. Trong thuật ngữ mã hóa ký tự, một điểm mã hoặc vị trí mã là một giá trị số tương ứng với một ký tự cụ thể.isDigit(int codePoint) cũng trả về true nếu ký tự là một chữ số và ngược lại là false .

Ví dụ đơn giản về phương thức isDigit trong Java

Hãy thử làm việc với phương thức Java Characher.isDigit() . Trước hết chúng ta sẽ viết một chương trình đơn giản để chứng minh phương pháp này.

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));
   }
}
Đầu ra là:
là char 5 một chữ số? đúng là char ua chữ số? sai là char ua chữ số? ĐÚNG VẬY

Phương thức isDigit của Java, một ví dụ phức tạp hơn một chút

Hãy thử sử dụng Character.isDigit()trong một vấn đề thực tế và thú vị hơn. Có một phương pháp nén được gọi là Mã hóa độ dài chạy hoặc viết tắt là RLE. Mã hóa độ dài chạy là một thuật toán nén dữ liệu thay thế các ký tự lặp lại (chuỗi) bằng một ký tự và số lần lặp lại của nó. Một chuỗi là một chuỗi bao gồm một số ký tự giống hệt nhau. Khi mã hóa (đóng gói, nén), một chuỗi các ký tự giống hệt nhau tạo thành một chuỗi được thay thế bằng một chuỗi chứa chính ký tự lặp lại và số lần lặp lại của nó. Vì vậy, nếu bạn có mã hóa độ dài chạy chuỗi “hhhhhorrribleeee” sẽ cho kết quả: h5or3ible5. Nếu bạn giải mã chuỗi, bạn nên tuần tự kiểm tra xem mình có ký tự chữ số hay không, và nếu bạn có chữ số thì đã đến lúc lấy chữ số đó là gì. Nhân tiện, tất cả các bạn đều biết tệp JPEG. Định dạng này sử dụng một biến thể của mã hóa thời lượng chạy theo mẫu đường chéo trên dữ liệu được lượng tử hóa. Biến thể là chỉ độ dài của các lần chạy có giá trị bằng 0 được mã hóa và tất cả các giá trị khác được mã hóa như chính chúng. Trong ví dụ dưới đây, chúng tôi sử dụngPhương thức Character.isDigit(char ch) để giải mã một chuỗi được mã hóa bằng mã hóa Run-length. Nếu bạn quan tâm, hãy cố gắng hoàn thành chương trình, hay đúng hơn là tạo phần đầu tiên của nó và viết một phương thức để mã hóa RLE một chuỗi, cũng như đọc một chuỗi từ một tệp. Hoặc nhập thủ công một chuỗi từ bảng điều khiển trong khi kiểm tra tính chính xác của đầu vào. Đây là một ví dụ về giải mã 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"));
   }
}
Đầu ra là:
CCCecddffffffff
Bạn có thể nhận thấy rằng chúng tôi không sử dụng String mà là StringBuilder . Tại sao? Thực tế là Chuỗi là bất biến và chúng tôi tăng bộ đếm và mỗi lần một chuỗi mới sẽ được tạo. Chúng tôi cũng đã sử dụng phương thức Character.digit trong chương trình. java.lang. Character.digit() là một phương thức trả về giá trị số của ký tự ch trong hệ thống số được chỉ định. Nếu cơ số không nằm trong phạm vi MIN_RADIX <= cơ sở <= MAX_RADIX hoặc nếu ch không phải là một chữ số hợp lệ trong cơ số đã chỉ định, phương thức sẽ trả về -1.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION