ในส่วนก่อนหน้านี้ เราได้เรียนรู้วิธีใช้ split(String regex) ของคลาส String เพื่อแยกย่อยสตริง และวิธีการใช้คลาส StringTokenizer เพื่อแยกวิเคราะห์คำในสตริง ในส่วนนี้ เราจะเรียนรู้วิธีใช้อ็อบเจ็กต์ของ คลาส Scanner เพื่อแยกวิเคราะห์ข้อมูลจากสตริงที่โปรแกรมต้องการ
มีสองวิธีในการแยกวิเคราะห์ข้อมูลที่โปรแกรมต้องการ หนึ่งคือการใช้แท็กตัวคั่นเริ่มต้นเพื่อแยกวิเคราะห์สตริง และอีกวิธีหนึ่งคือการใช้นิพจน์ทั่วไปเป็นแท็กตัวคั่นเพื่อแยกวิเคราะห์สตริง ในส่วนนี้เราจะเรียนรู้อย่างแรก วิธี.
หากต้องการแยกวิเคราะห์สตริงโดยใช้แท็กตัวคั่นเริ่มต้น เราจำเป็นต้องสร้างวัตถุ Scanner และส่งสตริงที่จะแยกวิเคราะห์ไปยังวัตถุที่สร้างขึ้น ตัวอย่างเช่น:
StringNBA=ILoveThisGame;
เพื่อที่จะแยกคำใน NBA เราสามารถสร้างออบเจ็กต์ Scanner ได้:
Scannerscanner=newScanner(เอ็นบีเอ);
จากนั้นเครื่องสแกนจะใช้ช่องว่างเป็นตัวคั่นเพื่อแยกคำในสตริง ลักษณะของการดำเนินการแยกวิเคราะห์มีดังนี้:
1) เครื่องสแกนจะเรียก เมธอด next() เพื่อส่งคืนคำใน NBA ตามลำดับ หากคำสุดท้ายใน NBA ถูกส่งคืนด้วยเมธอด next() เครื่องสแกนจะเรียก hasNext() เพื่อส่งคืน false มิฉะนั้นจะคืนค่าเป็นจริง
2) สำหรับคำที่เป็นตัวเลขในสตริงที่แยกวิเคราะห์ เช่น 123, 1.23 เป็นต้น เครื่องสแกนสามารถใช้เมธอด nextInt() หรือ nextDouble() แทนเมธอด next() กล่าวคือ เครื่องสแกนสามารถเรียกเมธอด nextInt( ) หรือเมธอด nextDouble() แปลงคำที่เป็นตัวเลขเป็น int หรือ double data แล้วส่งคืน
3) ถ้าคำนั้นไม่ใช่คำที่เป็นตัวเลข InputMismatchException จะเกิดขึ้นเมื่อเครื่องสแกนเรียกเมธอด nextInt() หรือ nextDouble() เมื่อจัดการข้อยกเว้น สามารถเรียกเมธอด next() เพื่อส่งคืนคำที่ไม่ใช่ดิจิทัลได้