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

การอ่านตัวเลขและบรรทัด

nextInt, nextLine และข้อควรระวัง

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

การอ่านตัวเลขตามชนิดข้อมูล

Scanner สามารถอ่านตัวเลขโดยตรงด้วยเมธอด เช่น nextInt และ nextDouble เมธอดเหล่านี้จะแปลงโทเคนถัดไปเป็นชนิดข้อมูลพื้นฐานที่ตรงกัน

การอ่านจำนวนเต็ม

nextInt() อ่านโทเคนถัดไปและส่งคืนเป็น int ในที่นี้เราใช้สตริงที่กำหนดไว้ล่วงหน้า จึงทำงานได้โดยไม่ต้องพิมพ์ข้อมูล

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("25");
        int age = scanner.nextInt();
        System.out.println(age + 1);
        scanner.close();
    }
}

การอ่านจำนวนทศนิยม

nextDouble() อ่านค่าจำนวนทศนิยม จากนั้นคุณสามารถนำค่านั้นไปใช้ในการคำนวณได้

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("3.5");
        double radius = scanner.nextDouble();
        System.out.println(radius * 2);
        scanner.close();
    }
}

การอ่านตัวเลขหลายค่า

การอ่านตัวเลขหลายครั้งจะดึงโทเคนต่อเนื่องกันไปทีละรายการ โดยข้ามช่องว่างระหว่างโทเคน

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("10 20 30");
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c = scanner.nextInt();
        System.out.println(a + b + c);
        scanner.close();
    }
}

การหาผลรวมจนกว่าจะเสร็จ

ใช้ hasNextInt() ร่วมกับ nextInt() เพื่ออ่านตัวเลขที่มีจำนวนไม่แน่นอนได้

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("5 15 25 35");
        int total = 0;
        while (scanner.hasNextInt()) {
            total += scanner.nextInt();
        }
        System.out.println(total);
        scanner.close();
    }
}

ข้อผิดพลาดคลาสสิกของ nextLine

นี่คือกับดักที่พบได้บ่อย nextInt() อ่านตัวเลขแล้ว แต่ยังเหลืออักขระบรรทัดใหม่อยู่ในบัฟเฟอร์ ดังนั้น nextLine() ครั้งถัดไปจะอ่านบรรทัดว่างที่ตกค้างนั้น แทนที่จะอ่านข้อความที่คุณคาดไว้

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("42\nHello World");
        int n = scanner.nextInt();
        String line = scanner.nextLine();
        System.out.println("Number: " + n);
        System.out.println("Line: [" + line + "]");
        scanner.close();
    }
}

การแก้ไขจุดพลาด

วิธีแก้คือเรียกใช้ nextLine() เพิ่มอีกครั้งหลัง nextInt() เพื่ออ่านอักขระขึ้นบรรทัดใหม่ที่ค้างอยู่ก่อนอ่านข้อมูลจากบรรทัดจริง

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("42\nHello World");
        int n = scanner.nextInt();
        scanner.nextLine();
        String line = scanner.nextLine();
        System.out.println("Number: " + n);
        System.out.println("Line: [" + line + "]");
        scanner.close();
    }
}

การอ่านจำนวนเต็มชนิด Long และค่าบูลีน

Scanner ยังมี nextLong และ nextBoolean รวมถึงเมธอดอื่น ๆ แต่ละเมธอดจะอ่านโทเคนที่มีประเภทตรงกัน

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("9000000000 true");
        long big = scanner.nextLong();
        boolean flag = scanner.nextBoolean();
        System.out.println(big);
        System.out.println(flag);
        scanner.close();
    }
}

ประเภทไม่ตรงกันทำให้เกิดข้อยกเว้น

หากโทเคนถัดไปไม่ใช่ตัวเลขที่ถูกต้อง nextInt จะทำให้เกิด InputMismatchException เมื่อไม่แน่ใจ ให้ตรวจสอบด้วย hasNextInt ก่อนเสมอ

import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("abc");
        try {
            scanner.nextInt();
        } catch (InputMismatchException e) {
            System.out.println("Not an integer!");
        }
        scanner.close();
    }
}

การอ่านตัวเลขอย่างปลอดภัย

รูปแบบที่รัดกุมจะอ่านข้อมูลเฉพาะเมื่อมีข้อมูลประเภทที่ถูกต้อง มิฉะนั้นจะอ่านและทิ้งโทเคนที่ไม่ถูกต้อง

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("x 7 y 9");
        int sum = 0;
        while (scanner.hasNext()) {
            if (scanner.hasNextInt()) {
                sum += scanner.nextInt();
            } else {
                scanner.next();
            }
        }
        System.out.println(sum);
        scanner.close();
    }
}

ข้อเตือนใจสำคัญ

ใช้ nextInt และ nextDouble สำหรับตัวเลข ป้องกันข้อผิดพลาดด้วยกลุ่มเมธอด hasNext และอย่าลืมอ่านอักขระขึ้นบรรทัดใหม่ที่เหลืออยู่ก่อนเปลี่ยนไปใช้ nextLine

ตรวจสอบความเข้าใจ

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

ทบทวน

คุณได้เรียนรู้การอ่านตัวเลขและบรรทัดแล้ว:

  • nextInt, nextDouble และ nextLong ใช้อ่านตัวเลขตามประเภท
  • วนซ้ำด้วย hasNextInt เมื่อไม่ทราบจำนวนข้อมูลล่วงหน้า
  • จุดพลาดเรื่องอักขระขึ้นบรรทัดใหม่: เรียกใช้ nextLine เพิ่มอีกครั้งหลัง nextInt
  • โทเคนที่ไม่ถูกต้องทำให้เกิด InputMismatchException
  • ป้องกันการอ่านข้อมูลด้วยกลุ่มเมธอด hasNext เพื่อความปลอดภัย

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

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

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

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

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

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

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

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

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

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

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

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

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