Page 55 - การโปรแกรมคอมพิวเตอร์ขั้นสูง
P. 55

สตริงบิวเดอร์ 2-45

       คำ�​อธิบาย​โปรแกรม
       บรรทัดท​ ี่ 1	 เรียก​ใช้​คลาสส​ แกน​เนอร​ ์ ที่จ​ ัดเ​ก็บ​ไว้ใ​น​แพ็กเ​กจ java.util.Scanner
       บรรทัดท​ ี่ 2-13 	 สร้างค​ ลาสช​ ื่อ ReadData
       บรรทัด​ที่ 3-12 	 สร้างเ​มธอด main เพื่อเ​ริ่ม​ต้นก​ ารท​ ำ�งาน​ของโ​ปรแกรม
       บรรทัด​ที่ 4 	 สร้าง​ออบ​เจ็กต์ข​ องค​ ลาสไ​ฟล์จ​ ากไ​ฟล์ช​ ื่อ “scores.txt” พร้อมก​ ับ​ระบุเ​ส้นท​ าง​ของ​ไฟล์ คือ

                    C:\\Temp\\ และ​ประกาศต​ ัวแปร​แบบ​อ้างอิงช​ ื่อ file เพื่อ​ใช้​สำ�หรับอ​ ้างอิง​ไป​ยัง​ออบ​เจ็กต์​
                    ดังก​ ล่าว
       บรรทัดท​ ี่ 5 	 สร้าง​ออบ​เจ็กต์​ของ​คลาส​สแกน​เนอ​ร์​สำ�หรับ​การ​อ่าน​ไฟล์ โดย​ใช้​ตัวแปร​อ้างอิง​ชื่อ input
                    ซึ่ง​จะ​อ้างอิง​ไป​ยัง​ออบ​เจ็กต์​ของ​คลาส​ไฟล์​ที่​อ้างอิง​ด้วย​ตัวแปร file ที่​อยู่​ใน​บรรทัด​ที่ 4
                    ผลลัพธ์ค​ ือ ทำ�การเ​ปิด​ไฟล์ “scores.txt” ขึ้นม​ าเ​พื่อ​อ่าน​ข้อมูล
       บรรทัดท​ ี่ 6 	 ใช้ล​ ูป while ในก​ าร​ทำ�​ซํ้าเพื่ออ​ ่าน​ข้อมูล โดย​เมธอด hasNext() จะท​ ำ�การ​ตรวจ​สอบ​ไฟล​์
                    ข้อมูล​ว่า​ยัง​มี​ข้อมูล​ที่ต​ ้องการ​อ่าน​อีก​หรือ​ไม่ ถ้า​ยัง​มีข​ ้อมูล​จะ​ให้​ค่า true ซึ่ง​ลูป while จะ​
                    วน​ทำ�​ซ้ำ� และถ​ ้า​ไม่มี​ข้อมูลแ​ ล้ว​จะใ​ห้ค​ ่า false และ​ออกจ​ า​กลูปท​ ันที
       บรรทัดท​ ี่ 7 	 อ่านค​ ่า​ข้อมูล​ที่เ​ป็นส​ ตริง แล้ว​นำ�​มา​เก็บ​ไว้​ที่ต​ ัวแปร firstName
       บรรทัด​ที่ 8 	 อ่าน​ค่า​ข้อมูล​ที่​เป็นเ​ลขจำ�นวน​เต็ม แล้วน​ ำ�​มาเ​ก็บไ​ว้ท​ ี่​ตัวแปร score
       บรรทัด​ที่ 9 	 แสดง​ผลอ​อกท​ าง​จอภาพ โดย​แสดงค​ ่าใ​น​ตัวแปร firstName และ score ซึ่ง​เป็น​ตัวแปรท​ ี​่
                    เก็บ​ค่าที่​ทำ�การอ​ ่าน​จาก​ไฟล์​นั่นเอง
       บรรทัดท​ ี่ 11 	 ปิดไ​ฟล์​ข้อมูล เพื่อจ​ บ​การ​ทำ�งานเ​กี่ยว​กับไ​ฟล์

       ผล​การ​ท�ำ งาน​ของโ​ปรแกรม
       ผล​ที่​ได้​จาก​การ​ทำ�งาน​ของ​โปรแกรม ex2-24.java ขึ้น​อยู่​กับ​ข้อมูล​ที่​จัด​เก็บ​อยู่​ใน​ไฟล์ scores.txt สำ�หรับ​
ไฟล์ต​ ัวอย่างม​ ีข​ ้อมูล ดังนี้

                       Nikom 90
                       Peerapol 130
                       John 44
                       Smith 78
                       Eric 59
                       Jones 60

       สำ�หรับเ​มธอด nextByte() nextShort() nextInt() nextLong() nextFloat() nextDouble() และ next()
นั้น​เรียก​อีกอ​ ย่าง​ว่า เมธอ​ ด​โทเ​คน็​ รีด​ ดิ้ง (token-reading) นั่นเ​พราะว​ ่าเ​มธอด​เหล่า​นี้​จะ​อ่านโ​ท​เค็น (token) คล้ายก​ ับ​
การ​อ่าน​คำ�​หนึ่ง​คำ� โดย​แยก​แต่​ละ​โท​เค็น​ด้วย​เครื่องหมาย​พิเศษ (delimiter) หรือ​อักขระ​คั่น ซึ่ง​ปกติ​จะ​เป็น​ช่อง​ว่าง
(white space) แต่​สามารถ​เปลี่ยน​เป็น​เครื่องหมาย​อื่น​ที่​ไม่ใช่​ช่อง​ว่าง​ได้​โดย​การ​ใช้​เมธอด useDelimiter() ใน​การ​
อ่านโ​ท​เค็นแ​ ต่​ละ​โท​เค็น​นั้น เมื่ออ​ ่านเ​ข้าม​ า​เสร็จแ​ ล้วจ​ ะ​ทำ�การ​แปลง (covert) ข้อมูล​ไป​เป็น​ชนิด​ข้อมูล​ที่ต​ ้องการ เช่น
byte short int long float หรือ double ตาม​ที่ไ​ด้ร​ ะบุ​เอาไ​ว้ใ​นต​ อนท​ ี่เ​รียกเ​มธอด เช่น nextByte() nextShort()
nextInt() nextLong() nextFloat() และ nextDouble() จับ​คู่ไ​ด้ต​ ามล​ ำ�ดับ จากน​ ั้นจ​ ะแ​ ปลง​ข้อมูล​ให้โ​ดยอ​ ัตโนมัติ
ยกเว้น next() จะ​ไม่มีก​ ารแ​ ปลง​ข้อมูล​ใด ๆ
   50   51   52   53   54   55   56   57   58   59   60