CodeGym /จาวาบล็อก /สุ่ม /วิธี Java isDigit
John Squirrels
ระดับ
San Francisco

วิธี Java isDigit

เผยแพร่ในกลุ่ม
เมธอดที่ส่งคืนค่าบูลีนส่วนใหญ่มักขึ้นต้นด้วยคำว่า “คือ” และหมายถึงการตรวจสอบว่าองค์ประกอบที่กำลังตรวจสอบตรงกับเงื่อนไขที่กำหนดหรือไม่ เมธอดCharacter.isDigit()ที่เราจะพูดถึงในบทความนี้ กำหนดว่าค่าถ่านที่ระบุเป็นตัวเลขหรือไม่

ไวยากรณ์เมธอด Java isDigit

java.lang.Character.isDigit(char ch)เป็นเมธอดในตัวใน Java ที่กำหนดว่าอักขระที่ระบุเป็นตัวเลขหรือไม่ “ตัวเลข” หมายถึงอะไรในบริบทการเขียนโปรแกรม Java ตามคำจำกัดความใน Java Doc หาก เมธอด Character.getType(ch)คืน ค่าคงที่ DECIMAL_DIGIT_NUMBERแสดงว่าอักขระนั้นเป็นตัวเลข ช่วงอักขระ Unicode บางช่วงที่มีตัวเลขคือช่วงถัดไป:
  • จาก '\u0030' ถึง '\u0039' คือตัวเลข ISO-LATIN-1 ('0' ถึง '9')

  • จาก '\u0660' ถึง '\u0669' เป็นตัวเลขอารบิก-อินดิก

  • จาก '\u06F0' ถึง '\u06F9' เป็นตัวเลขอารบิก-อินดิกแบบขยาย

  • จาก '\u0966' ถึง '\u096F' เป็นอักษรเทวนาครี

  • จาก \uFF10' ถึง '\uFF19' เป็นตัวเลขเต็มความกว้าง

นอกจากนี้ยังมีช่วงอื่นที่มีตัวเลข อย่างไรก็ตาม ส่วนใหญ่แล้วเราจะใช้ตัวเลขตั้งแต่ '\u0030' ถึง '\u0039' ไวยากรณ์ของCharacter.isDigit()อยู่ที่นี่:

public static boolean isDigit(char myChar)
โดยที่myCharคืออักขระที่จะทดสอบ วิธีนี้จะคืนค่าจริงหากอักขระเป็นตัวเลขและเป็นเท็จหากไม่เป็นเช่นนั้น ตามวิธี Java doc isDigit(char myChar)ไม่สามารถจัดการอักขระเสริมได้ เพื่อรองรับอักขระ Unicode ทั้งหมด รวมถึงอักขระเสริม โปรแกรมเมอร์ควรใช้เมธอดisDigit(int) มันดูเหมือนกัน แต่ต้องขอบคุณ OOP และการสนับสนุน polymorphism ทำงานแตกต่างกันเล็กน้อย บูลีนสาธารณะแบบคงที่ isDigit (int codePoint)กำหนดว่าอักขระที่ระบุ (จุดรหัส Unicode) เป็นตัวเลขหรือไม่ ในคำศัพท์การเข้ารหัสอักขระ จุดโค้ดหรือตำแหน่งโค้ดคือค่าตัวเลขที่สอดคล้องกับอักขระเฉพาะisDigit(int codePoint)ยังคืนค่าจริงหากอักขระเป็นตัวเลขและมิฉะนั้นจะ เป็นเท็จ

ตัวอย่างง่ายๆของเมธอด Java isDigit

มาลองใช้งานเมธอด Java Characher.isDigit () กัน ก่อนอื่นเราจะเขียนโปรแกรมอย่างง่ายเพื่อสาธิตวิธีการ

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));
   }
}
ผลลัพธ์คือ:
ถ่าน 5 เป็นตัวเลขหรือไม่? ถ่าน ua หลัก จริงหรือ? เท็จคือถ่าน ua หลัก? จริง

วิธี Java isDigit ตัวอย่างที่ซับซ้อนขึ้นเล็กน้อย

ลองใช้ Character.isDigit() กันในปัญหาในชีวิตจริงที่น่าสนใจยิ่งขึ้น มีวิธีการบีบอัดที่เรียกว่า Run Length Encoding หรือเรียกสั้นๆ ว่า RLE Run Length Encoding เป็นอัลกอริธึมการบีบอัดข้อมูลที่แทนที่อักขระซ้ำ (ชุด) ด้วยอักขระหนึ่งตัวและจำนวนการทำซ้ำ ซีรีส์คือลำดับที่ประกอบด้วยอักขระที่เหมือนกันหลายตัว เมื่อเข้ารหัส (การบรรจุ การบีบอัด) สตริงของอักขระที่เหมือนกันซึ่งประกอบกันเป็นชุดจะถูกแทนที่ด้วยสตริงที่มีอักขระที่ซ้ำกันและจำนวนของการทำซ้ำ ดังนั้นหากคุณมีการเข้ารหัสความยาวของการเรียกใช้สตริง "hhhhhorrribleeee" จะให้ผลลัพธ์: h5or3ible5 หากคุณถอดรหัสสตริง คุณควรตรวจสอบตามลำดับว่าคุณมีอักขระที่เป็นตัวเลขหรือไม่ใช่ตัวเลข และถ้าคุณมีตัวเลข ก็ถึงเวลาที่จะต้องทราบว่าตัวเลขคืออะไร อย่างไรก็ตาม พวกคุณทุกคนรู้จักไฟล์ JPEG รูปแบบนี้ใช้การเข้ารหัสความยาวรันรูปแบบต่างๆ ในรูปแบบแนวทแยงเหนือข้อมูลเชิงปริมาณ ตัวแปรคือเฉพาะความยาวของการรันของค่าศูนย์เท่านั้นที่ถูกเข้ารหัส และค่าอื่นๆ ทั้งหมดจะถูกเข้ารหัสด้วยตัวเอง ในตัวอย่างด้านล่าง เราใช้Character.isDigit(char ch)วิธีการถอดรหัสสตริงที่เข้ารหัสด้วยการเข้ารหัสแบบ Run-length หากคุณสนใจ ลองทำโปรแกรมให้เสร็จ หรือสร้างส่วนแรกและเขียนเมธอดสำหรับการเข้ารหัสสตริง RLE ตลอดจนอ่านสตริงจากไฟล์ หรือป้อนสตริงด้วยตนเองจากคอนโซลขณะตรวจสอบความถูกต้องของอินพุต นี่คือตัวอย่างการถอดรหัส 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"));
   }
}
ผลลัพธ์คือ:
CCCeddffffffff
คุณ อาจ สังเกตว่าเราไม่ได้ใช้Stringแต่ใช้StringBuilder ทำไม ความจริงก็คือStringนั้นเปลี่ยนรูปไม่ได้ และเราจะเพิ่มตัวนับ และแต่ละครั้งจะมีการสร้างสตริงใหม่ เรายังใช้ วิธี Character.digitในโปรแกรม java.lang.Character.digit()เป็นเมธอดที่คืนค่าตัวเลขของอักขระchในระบบตัวเลขที่ระบุ หากฐานไม่อยู่ในช่วง MIN_RADIX <= ฐาน <= MAX_RADIX หรือถ้าchไม่ใช่ตัวเลขที่ถูกต้องในฐานที่ระบุ วิธีการจะส่งกลับ -1
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION