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

การอ่านทีละบรรทัด

readLine และลูป

การอ่านทีละบรรทัด เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

เมธอด readLine

readLine() คือหัวใจของ BufferedReader โดยจะอ่านอักขระจนพบตัวแบ่งบรรทัด (Enter) แล้วส่งคืนบรรทัดนั้นเป็น String

ข้อความที่ส่งคืนจะไม่รวมอักขระขึ้นบรรทัดใหม่ ในบทเรียนนี้เราจะอ่านทั้งบรรทัดเดียวและหลายบรรทัด

String line = br.readLine();

การอ่านหนึ่งบรรทัด

นี่คือกรณีที่ง่ายที่สุด: อ่านชื่อแล้วแสดงคำทักทาย readLine() จะหยุดรอจนกว่าผู้ใช้จะกด Enter

เนื่องจากเมธอดนี้อ่านข้อมูลจาก System.in โค้ดตัวอย่างจึงหยุดรอข้อมูลจากแป้นพิมพ์และไม่สามารถรันอัตโนมัติที่นี่ได้

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
            new BufferedReader(new InputStreamReader(System.in));
        String name = br.readLine();
        System.out.println("Welcome, " + name + "!");
    }
}

readLine ส่งคืนค่าอะไรเมื่อถึงจุดสิ้นสุด

เมื่อไม่มีข้อมูลเข้าเหลืออยู่ (ถึงจุดสิ้นสุดของกระแสข้อมูล หรือผู้ใช้ส่งสัญญาณ EOF) readLine() จะส่งคืนค่า null แทนที่จะเป็น String

นี่คือสัญญาณสำคัญ: การตรวจสอบ null เป็นวิธีที่ทำให้เราทราบว่าควรหยุดอ่าน

String line = br.readLine();
if (line == null) {
    System.out.println("No more input.");
}

การอ่านจนถึง EOF

หากต้องการอ่านทุกบรรทัดจนกว่าข้อมูลเข้าจะสิ้นสุด ให้วนซ้ำขณะที่ readLine() ไม่เป็น null รูปแบบทั่วไปนี้กำหนดค่าและตรวจสอบค่าในเงื่อนไขเดียวกัน

การวนซ้ำแต่ละครั้งจะให้บรรทัดถัดไป จนกว่า null จะหยุดการวนซ้ำอย่างเรียบร้อย

String line;
while ((line = br.readLine()) != null) {
    System.out.println("Got: " + line);
}

โปรแกรมอ่านหลายบรรทัด

นี่คือโปรแกรมฉบับสมบูรณ์ที่สะท้อนกลับทุกบรรทัดที่คุณพิมพ์จนกว่ากระแสข้อมูลจะสิ้นสุด

โปรแกรมนี้อ่านข้อมูลจาก System.in จึงรอข้อมูลเข้าและไม่สามารถรันอัตโนมัติได้ แต่รูปแบบการวนซ้ำนี้ตรงกับสิ่งที่คุณจะนำไปใช้ซ้ำ

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
            new BufferedReader(new InputStreamReader(System.in));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println("Echo: " + line);
        }
    }
}

การนับบรรทัด

คุณสามารถทำงานภายในการวนซ้ำได้ เช่น การนับ ในที่นี้เราจะนับว่ามีกี่บรรทัดเข้ามา

การวนซ้ำแต่ละครั้งจะอ่านบรรทัดใหม่และเพิ่มตัวนับ เมื่อข้อมูลเข้าสิ้นสุด เราจะแสดงผลรวม

int count = 0;
String line;
while ((line = br.readLine()) != null) {
    count++;
}
System.out.println("Lines read: " + count);

บรรทัดว่างกับค่าว่าง

โปรดระวัง: บรรทัดว่าง (ผู้ใช้เพียงกด Enter) จะส่งคืน "" ซึ่งเป็น String ว่าง ไม่ใช่ null

ดังนั้น "".equals(line) หมายถึงบรรทัดว่าง ส่วน line == null หมายถึงข้อมูลเข้าสิ้นสุดลงจริง ๆ ทั้งสองกรณีแตกต่างกัน

if (line == null) {
    // input finished
} else if (line.isEmpty()) {
    // user pressed Enter on a blank line
}

การจำลองบรรทัดโดยไม่ใช้ข้อมูลเข้ามาตรฐาน

หากต้องการดูการทำงานของ readLine() โดยไม่ใช้ข้อมูลเข้าจากแป้นพิมพ์ เราสามารถป้อนข้อมูลให้ BufferedReader จาก StringReader ได้ วิธีนี้รันได้อย่างสมบูรณ์

สตริงจะเก็บสองบรรทัดที่คั่นด้วย \n และการวนซ้ำจะแสดงผลแต่ละบรรทัด

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
            new BufferedReader(new StringReader("apple\nbanana"));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println("Fruit: " + line);
        }
    }
}

การตัดช่องว่าง

ข้อมูลเข้ามักมีช่องว่างเกินติดมาด้วย ใช้ trim() เพื่อลบช่องว่างด้านหน้าและด้านท้ายของบรรทัดก่อนนำไปใช้

วิธีนี้ช่วยให้การเปรียบเทียบและการแปลงค่าทำงานได้อย่างน่าเชื่อถือ โดยเฉพาะเมื่อผู้ใช้เผลอใส่ช่องว่าง

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
            new BufferedReader(new StringReader("  hello  \n"));
        String line = br.readLine().trim();
        System.out.println("[" + line + "]");
    }
}

การอ่านจำนวนบรรทัดที่กำหนดไว้

บางครั้งคุณทราบจำนวนบรรทัดตั้งแต่ต้น การวนซ้ำแบบ for จะอ่านบรรทัดตามจำนวนนั้นพอดี

วิธีนี้พบได้บ่อยเมื่อโจทย์ระบุว่า “ตัวเลขแรกบอกว่ามีกี่บรรทัดตามมา”

for (int i = 0; i < 3; i++) {
    String item = br.readLine();
    System.out.println(i + ": " + item);
}

แนวปฏิบัติสำคัญสำหรับ readLine

โปรดจำแนวปฏิบัติเหล่านี้:

  • ตรวจสอบ null ก่อนใช้บรรทัดเสมอ
  • ใช้ trim() เมื่อช่องว่างเกินอาจทำให้เกิดข้อผิดพลาด
  • สตริงว่างไม่เหมือนกับ null

ถัดไปเราจะเปลี่ยนบรรทัดเหล่านี้ให้เป็นตัวเลข

ตรวจสอบอย่างรวดเร็ว

readLine() ส่งคืนค่าอะไรเมื่อกระแสข้อมูลเข้ามาถึงจุดสิ้นสุด

สรุปทบทวน

คุณได้เรียนรู้การอ่านทีละบรรทัด การวนซ้ำด้วย while ((line = br.readLine()) != null) และการแยกบรรทัดว่าง ("") ออกจากจุดสิ้นสุดของข้อมูลเข้า (null)

คุณยังได้เห็นตัวอย่างที่รันได้โดยใช้ StringReader ถัดไป: การเปลี่ยนบรรทัดข้อความให้เป็นตัวเลข

คำถามที่พบบ่อย

บทเรียน “การอ่านทีละบรรทัด” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การอ่านทีละบรรทัด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การอ่านทีละบรรทัด”

readLine และลูป คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การอ่านทีละบรรทัด” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม

ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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