การอ่านข้อมูลนำเข้าด้วย Scanner
อ่านข้อมูลนำเข้าจากผู้ใช้ผ่าน System.in
การอ่านข้อมูลนำเข้าด้วย Scanner เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
การอ่านข้อมูลจากแป้นพิมพ์
สำหรับการอ่านสิ่งที่ผู้ใช้พิมพ์ Java มีคลาส Scanner อยู่ในแพ็กเกจ java.util คุณเชื่อมคลาสนี้เข้ากับ System.in ซึ่งเป็นกระแสข้อมูลนำเข้ามาตรฐาน
Scanner ช่วยให้อ่านคำ บรรทัด และตัวเลขได้ง่าย
การสร้าง Scanner
สร้าง Scanner โดยส่ง System.in เข้าไป ตัวอย่างในบทนี้ใช้สตริงที่กำหนดไว้ล่วงหน้า จึงทำงานได้โดยไม่ต้องป้อนข้อมูล แต่เมธอดเดียวกันนี้ใช้กับข้อมูลจากแป้นพิมพ์ได้
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("Hello");
String word = scanner.next();
System.out.println(word);
scanner.close();
}
}การอ่านคำเดียว
next() อ่านโทเคนหนึ่งรายการ ซึ่งหมายถึงข้อความจนถึงช่องว่างถัดไป ช่องว่างและบรรทัดใหม่ใช้แยกโทเคน
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("apple banana cherry");
System.out.println(scanner.next());
System.out.println(scanner.next());
scanner.close();
}
}การอ่านทั้งบรรทัด
nextLine() อ่านทุกอย่างจนถึงท้ายบรรทัด รวมถึงช่องว่างด้วย ใช้เมธอดนี้เมื่อข้อมูลนำเข้ามีหลายคำที่ต้องการเก็บรวมกัน
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("John Smith");
String fullName = scanner.nextLine();
System.out.println("Name: " + fullName);
scanner.close();
}
}การตรวจสอบว่ามีข้อมูลนำเข้าเพิ่มเติม
hasNext() ส่งคืนค่า true ตราบใดที่ยังมีโทเคนเหลืออยู่ ทำให้คุณวนซ้ำจนกว่าจะอ่านข้อมูลนำเข้าจนครบได้
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("red green blue");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
scanner.close();
}
}การอ่านทีละบรรทัด
ใช้ hasNextLine() คู่กับ nextLine() เพื่อประมวลผลข้อมูลนำเข้าหลายบรรทัดทีละบรรทัด
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("line one\nline two\nline three");
while (scanner.hasNextLine()) {
System.out.println("> " + scanner.nextLine());
}
scanner.close();
}
}ตัวอย่างการรับข้อมูลจากแป้นพิมพ์จริง
สำหรับการรับข้อมูลจากผู้ใช้จริง คุณจะเขียนบรรทัดด้านล่างนี้ ลองทำงานในเครื่องของคุณได้ โปรแกรมจะรอที่ nextLine จนกว่าคุณจะพิมพ์และกด Enter
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name);
scanner.close();
}
}การปิด Scanner
การเรียก close() จะคืนทรัพยากร วิธีที่สะอาดกว่าคือ try-with-resources ซึ่งจะปิดตัวอ่านโดยอัตโนมัติเมื่อจบบล็อก
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner("data here")) {
System.out.println(scanner.next());
}
}
}next กับ nextLine
โปรดจำความแตกต่างที่สำคัญนี้ไว้ next() จะหยุดที่ช่องว่างและส่งคืนโทเคนหนึ่งรายการ ขณะที่ nextLine() จะอ่านส่วนที่เหลือของบรรทัดปัจจุบัน
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("first second third");
System.out.println(scanner.next());
System.out.println(scanner.nextLine());
scanner.close();
}
}ตัวแบ่งแบบกำหนดเอง
คุณสามารถเปลี่ยนสิ่งที่ใช้แยกโทเคนได้ด้วย useDelimiter ในที่นี้ใช้เครื่องหมายจุลภาคแยกค่าแทนช่องว่าง
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("a,b,c");
scanner.useDelimiter(",");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
scanner.close();
}
}พื้นฐาน Scanner
สร้าง Scanner หนึ่งตัวบน System.in ใช้ next สำหรับคำและ nextLine สำหรับทั้งบรรทัด วนซ้ำด้วยกลุ่มเมธอด hasNext และปิดตัวอ่านเสมอ
ตรวจสอบความเข้าใจ
ทดสอบพื้นฐาน Scanner ของคุณ
สรุปทบทวน
คุณได้เรียนรู้การอ่านข้อมูลนำเข้าด้วย Scanner ดังนี้
- สร้างด้วย
new Scanner(System.in) next()อ่านคำ และnextLine()อ่านทั้งบรรทัด- วนซ้ำด้วย
hasNext()หรือhasNextLine() - ปิดด้วย
close()หรือ try-with-resources useDelimiterใช้เปลี่ยนตัวแยกโทเคน
คำถามที่พบบ่อย
บทเรียน “การอ่านข้อมูลนำเข้าด้วย Scanner” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การอ่านข้อมูลนำเข้าด้วย Scanner” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การอ่านข้อมูลนำเข้าด้วย Scanner”
อ่านข้อมูลนำเข้าจากผู้ใช้ผ่าน System.in คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การอ่านข้อมูลนำเข้าด้วย Scanner” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การอ่านข้อมูลนำเข้าด้วย Scanner
- การอ่านตัวเลขและบรรทัด
- การตรวจสอบข้อมูลนำเข้าจากผู้ใช้
- ทางเลือกนอกจาก BufferedReader