0Pricing
Java Academy · บทเรียน

การอ่านข้อมูลนำเข้าด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การอ่านข้อมูลนำเข้าด้วย Scanner
  2. การอ่านตัวเลขและบรรทัด
  3. การตรวจสอบข้อมูลนำเข้าจากผู้ใช้
  4. ทางเลือกนอกจาก BufferedReader
← กลับไปที่ Java Academy