โปรแกรมตัวอย่าง:
1. ใช้เครื่องสแกนเนอร์เพื่ออ่านข้อมูลจำนวนเต็มหรือลอยจากแป้นพิมพ์
2. ใช้ BufferedReader อ่านสตริงจากคีย์บอร์ดแล้วเขียนลงในไฟล์ abc.txt
คำอธิบายของคลาสสแกนเนอร์ JDK1.5
เครื่องสแกนเป็นคลาสใหม่ที่เพิ่มเข้ามาใน SDK1.5 แต่คุณสามารถใช้คลาสนี้เพื่อสร้างออบเจ็กต์ได้
เครื่องอ่านสแกนเนอร์ = เครื่องสแกนเนอร์ใหม่ (System.in);
จากนั้นวัตถุตัวอ่านจะเรียกใช้เมธอด (ฟังก์ชัน) ต่อไปนี้เพื่ออ่านข้อมูลประเภทต่างๆ ที่ผู้ใช้ป้อนในบรรทัดคำสั่ง:
next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot()
ใช้เมธอด nextLine() เพื่อป้อนบรรทัดที่อาจมีช่องว่าง หากคุณกำลังอ่านคำ คุณสามารถเรียกเมธอด .next() ได้
3. ความแตกต่างระหว่าง Scanner และ BufferedReader
เมื่อป้อนข้อมูลลงในโปรแกรมในโหมดบรรทัดคำสั่ง เราสามารถใช้ออบเจ็กต์สตริงอินพุตมาตรฐาน System.in อย่างไรก็ตาม เราไม่ได้ใช้โดยตรงเนื่องจากวิธีการอ่านที่ System.in จัดเตรียมไว้ให้สามารถอ่านได้ครั้งละหนึ่งคำเท่านั้น ส่วนของข้อมูล และสิ่งที่เรามักใช้คือการอ่านสตริงหรือตัวเลข ดังนั้นฟังก์ชันที่ได้รับจากวิธีการอ่านจึงไม่มีประโยชน์สำหรับเรามากนัก
ใน Java SE 6 คุณสามารถใช้คลาส Scanner เพื่อรับอินพุตของผู้ใช้ได้ คลาส Scanner จะอยู่ในแพ็คเกจ java.util หากคุณต้องการใช้ Scanner เพื่อรับอินพุตจากผู้ใช้ คุณต้องเพิ่มการนำเข้า java.util.Scanner คำสั่งของ .import ฟังก์ชั่นคือการบอกคอมไพเลอร์ว่าคุณจะใช้คลาส Scanner ในแพ็คเกจ java.util
ลองดูตัวอย่าง:
เรียกใช้โปรแกรมด้านบนแล้วคุณจะเห็นว่าสตริงที่คุณป้อนจะปรากฏขึ้นตามที่แสดงด้านล่าง
มาดูความหมายของแต่ละคำสั่งในโปรแกรมนี้กันดีกว่า:
new หมายถึงการสร้าง object ในโปรแกรม new หมายถึงการสร้าง object scan ของคลาส Scanner แต่เมื่อสร้าง object ของคลาส Scanner คุณต้องใช้ System.in เป็น parameter เช่นกัน ใน System.in ผู้สนับสนุนออบเจ็กต์ รับเนื้อหาที่ผู้ใช้ป้อนและส่งมอบให้กับ Scanner เพื่อประมวลผลบางอย่าง
มีหลายวิธีในคลาส Scanner:
ถัดไป (): รับสตริง;
nextInt(): แปลงสตริงที่ได้รับให้เป็นจำนวนเต็มประเภท int;
nextFloat(): แปลงสตริงที่ได้รับให้เป็นประเภท float;
nextBoolean(): แปลงสตริงที่ได้รับให้เป็นประเภทบูลีน
การใช้เครื่องสแกนเพื่อรับอินพุตของผู้ใช้นั้นสะดวกมาก แต่เครื่องสแกนจะรับอินพุตตามอักขระเว้นวรรค รวมถึงแป้นเว้นวรรค ปุ่ม Tab และปุ่ม Enter เมื่อกดปุ่มใด ๆ เหล่านี้ เครื่องสแกนจะกลับไปยังอินพุตถัดไปเมื่อใด คุณป้อนเมื่อมีช่องว่างตรงกลางเนื้อหา การใช้ Scanner ไม่สามารถรับสตริงที่คุณป้อนได้อย่างสมบูรณ์ ในขณะนี้ เราสามารถพิจารณาใช้คลาส BufferedReader เพื่อรับอินพุต ที่จริงแล้วใน Java SE 1.4 และเวอร์ชันก่อนหน้า เวอร์ชันต่างๆ ยังไม่มีการระบุวิธี Scanner ไว้ด้วย เรายังใช้ BufferReader เมื่อรับอินพุตอีกด้วย
คลาส BufferedReader อยู่ในแพ็คเกจ java.io ดังนั้นหากต้องการใช้คลาสนี้ คุณต้องแนะนำแพ็คเกจ java.io: import java.io.BufferedReader
วิธีการ readLine() ที่ใช้วัตถุ BufferedReader ต้องจัดการข้อยกเว้น java.io.IOException (ข้อยกเว้น)
การใช้ BufferedReader เพื่อรับอินพุตนั้นซับซ้อนกว่ามากในการทำความเข้าใจ แต่วิธีนี้ได้รับการแก้ไขแล้ว เพียงทำตามวิธีเดียวกันก่อนการใช้งานแต่ละครั้ง
BufferedReader buffer = BufferedReader ใหม่ (InputStreamReader ใหม่ (System.in));
ข้อความสตริง = buffer.readLine();
เมธอด readLine() จะส่งคืนอักขระทั้งหมดที่ผู้ใช้ป้อนก่อนที่จะกดปุ่ม Enter ไม่รวมอักขระที่ส่งคืนตัวสุดท้ายของปุ่ม Enter
โปรแกรมตัวอย่างที่สมบูรณ์มีดังนี้:
-
4. ดังแสดงในโปรแกรมต่อไปนี้: คลาส StringTest
ป้อนเนื้อหาหลังคำสั่งดำเนินการ: java + class name และจะได้รับโดย args
เนื่องจาก args ได้รับพารามิเตอร์บรรทัดคำสั่ง