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() จะไม่มีก ารแ ปลงข้อมูลใด ๆ