Hướng Dẫn Chi Tiết Việc Sử Dụng Scanner Để Xử Lý Đầu Vào Trong Java

Giới Thiệu Về Đối Tượng Quét

Lớp Scanner thuộc gói java.util cung cấp các phương tiện để phân tích dữ liệu dựa trên biểu thức chính quy đơn giản. Nó thường được dùng để lấy dữ liệu từ bàn phím hoặc biến thiên của hệ thống.

Cấu trúc cơ bản để khởi tạo đối tượng quét liên kết với stream vào của hệ thống:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // Khởi tạo Scanner trỏ đến System.in
        Scanner inputStream = new Scanner(System.in); 
    }
}

Phương Thức Thu Nhặt Chuỗi Văn Bản

Khi cần lấy toàn bộ nội dung người dùng nhập bao gồm cả khoảng trắng cho đến khi nhấn Enter, ta sử dụng hàm nextLine().

import java.util.Scanner;

public class TextCapture {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        
        System.out.print("Nhập đoạn văn bản: ");
        // Phương thức trả về toàn bộ dòng dữ liệu
        String rawInput = reader.nextLine(); 
        
        System.out.println("Kết quả đã nhập: " + rawInput);
        
        reader.close();
    }
}

Xác Thực Và Xử Lý Dữ Liệu Số Học

Tương tự như chuỗi, việc đọc số nguyên hay số thực cần đảm bảo rằng đầu vào đúng định dạng. Ta nên kiểm tra điều kiện có sẵn thông qua hasNextInt() hoặc hasNextFloat() trước khi gọi phương thức chuyển đổi tương ứng.

import java.util.Scanner;

public class NumericValidator {
    public static void main(String[] args) {
        Scanner numericIn = new Scanner(System.in);

        // Kiểm tra và đọc số nguyên
        System.out.println("Nhập giá trị nguyên: ");
        if (numericIn.hasNextInt()) {
            int intValue = numericIn.nextInt();
            System.out.println("Giá trị nguyên: " + intValue);
        } else {
            System.out.println("Lỗi: Vui lòng nhập đúng kiểu số nguyên.");
        }

        // Kiểm tra và đọc số thực (dạng float)
        System.out.println("Nhập giá trị số thực: ");
        if (numericIn.hasNextFloat()) {
            float floatValue = numericIn.nextFloat();
            System.out.println("Giá trị số thực: " + floatValue);
        } else {
            System.out.println("Lỗi: Vui lòng nhập đúng kiểu số thực.");
        }

        numericIn.close();
    }
}

Vòng Lặp Tính Tổng Và Trung Bình Cộng

Một trường hợp sử dụng phổ biến khác là chấp nhận nhiều số lượng đầu vào chưa biết trước để tính toán thống kê. Vòng lặp while kết hợp với hàm hasNextDouble() sẽ giúp vòng lặp tiếp tục hoạt động miễn là đầu vào còn hợp lệ.

import java.util.Scanner;

public class StatisticsProcessor {
    public static void main(String[] args) {
        Scanner statsInput = new Scanner(System.in);
        
        double totalSum = 0.0;
        int count = 0;
        
        System.out.println("Nhập dãy số kép (nhập chữ bất kỳ để dừng):");
        
        // Tiếp tục vòng lặp nếu phần tử kế tiếp là số kép
        while (statsInput.hasNextDouble()) {
            double currentVal = statsInput.nextDouble();
            totalSum += currentVal;
            count++;
            
            System.out.printf("Dòng thứ %d: Kết quả cộng dồn = %.2f%n", count, totalSum);
        }
        
        if (count > 0) {
            System.out.printf("Tổng cuối cùng: %.2f%n", totalSum);
            System.out.printf("Trung bình cộng: %.2f%n", totalSum / count);
        } else {
            System.out.println("Không có dữ liệu số nào được nhập.");
        }
        
        statsInput.close();
    }
}
]]>

Thẻ: Java scanner-class io-streams input-parsing data-type-checking

Đăng vào ngày 24 tháng 5 lúc 23:24