Tìm hiểu về lớp Scanner trong ngôn ngữ lập trình Java

606

Lớp Scanner trong java là một công cụ quan trọng cho việc đọc dữ liệu đầu vào từ người dùng hoặc các nguồn khác như tệp hoặc luồng. Điều này giúp cho việc nhập liệu trở nên dễ dàng và thuận tiện hơn đối với các lập trình viên. Hãy cùng TopDev hiểu rõ hơn về lớp Scanner trong Java qua nội dung bài viết.

Cách sử dụng Scanner trong Java

Để sử dụng lớp Scanner trong Java, bạn cần import gói java.util và sau đó tạo đối tượng Scanner được liên kết với nguồn dữ liệu. Ví dụ:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // Đọc dữ liệu từ bảng điều khiển
    }
}

Bạn cũng có thể liên kết đối tượng Scanner với một tệp hoặc luồng:

Scanner scanner = new Scanner(new File("input.txt")); // Đọc dữ liệu từ tệp
Scanner scanner = new Scanner(new FileInputStream("input.txt")); // Đọc dữ liệu từ FileInputStream

Sau khi tạo đối tượng Scanner, bạn có thể sử dụng các phương thức của lớp này để đọc dữ liệu. Phương thức phổ biến nhất là nextInt(), nextDouble() và nextLine(), lần lượt đọc các số nguyên, số thực và chuỗi ký tự từ nguồn.

Xem ngay tin tuyển dụng Java tại TopDev

Ví dụ về việc sử dụng Scanner trong Java

Để minh họa cho việc sử dụng lớp Scanner trong Java, hãy cùng xem xét một ví dụ đơn giản về việc nhập vào thông tin của một sinh viên và hiển thị ra màn hình:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Nhập tên sinh viên: ");
        String name = scanner.nextLine();
        System.out.print("Nhập tuổi sinh viên: ");
        int age = scanner.nextInt();
        System.out.println("Thông tin sinh viên:");
        System.out.println("Tên: " + name);
        System.out.println("Tuổi: " + age);
    }
}

Kết quả khi chạy chương trình và nhập vào tên là “Nguyen Van A” và tuổi là 20 sẽ là:

Nhập tên sinh viên: Nguyen Van A
Nhập tuổi sinh viên: 20
Thông tin sinh viên:
Tên: Nguyen Van A
Tuổi: 20

>>> Xem thêm: Lập trình đa luồng trong Java (Java Multi-threading)

Lợi ích của việc sử dụng Scanner trong Java

  • Thuận tiện: Scanner cung cấp một cách đơn giản và dễ sử dụng để đọc dữ liệu đầu vào. Các lập trình viên chỉ cần tạo đối tượng Scanner và sử dụng các phương thức của nó để đọc dữ liệu từ nguồn.
  • Tiết kiệm thời gian: Với lớp Scanner, bạn không cần phải tự viết mã để xử lý dữ liệu đầu vào. Điều này giúp cho việc nhập liệu trở nên nhanh chóng hơn và tiết kiệm được thời gian cho các lập trình viên.
  • Dễ dàng sử dụng với các kiểu dữ liệu khác nhau: Lớp Scanner có thể đọc được nhiều loại dữ liệu khác nhau như số nguyên, số thực, chuỗi ký tự, v.v. Điều này giúp cho việc nhập liệu trở nên linh hoạt hơn và không bị giới hạn bởi kiểu dữ liệu.

scanner trong java

Các phương thức của lớp Scanner trong Java

Lớp Scanner trong Java cung cấp nhiều phương thức để đọc dữ liệu từ nguồn. Dưới đây là danh sách các phương thức phổ biến nhất:

Phương thức Mô tả
nextInt() Đọc một số nguyên từ nguồn dữ liệu
nextDouble() Đọc một số thực từ nguồn dữ liệu
nextLine() Đọc một chuỗi ký tự từ nguồn dữ liệu
nextBoolean() Đọc một giá trị boolean từ nguồn dữ liệu
nextByte() Đọc một số byte từ nguồn dữ liệu
nextShort() Đọc một số short từ nguồn dữ liệu
nextLong() Đọc một số long từ nguồn dữ liệu
nextFloat() Đọc một số float từ nguồn dữ liệu

Những lỗi thường gặp khi sử dụng Scanner trong Java

Mặc dù lớp Scanner là một công cụ hữu ích, nhưng nó cũng có thể gây ra một số lỗi khi sử dụng. Dưới đây là một số lỗi thường gặp khi sử dụng Scanner trong Java và cách xử lý chúng:

Lỗi InputMismatchException

Lỗi này xảy ra khi người dùng nhập vào một kiểu dữ liệu không phù hợp với kiểu dữ liệu được yêu cầu bởi phương thức. Ví dụ, nếu bạn sử dụng phương thức nextInt() để đọc một số nguyên nhưng người dùng lại nhập vào một chuỗi ký tự, lỗi InputMismatchException sẽ xảy ra. Để xử lý lỗi này, bạn có thể sử dụng phương thức hasNextInt() để kiểm tra trước khi đọc dữ liệu.

Lỗi NoSuchElementException

Lỗi này xảy ra khi không còn dữ liệu để đọc từ nguồn nữa. Ví dụ, nếu bạn sử dụng phương thức nextInt() để đọc một số nguyên nhưng không còn số nào để đọc nữa, lỗi NoSuchElementException sẽ xảy ra. Để xử lý lỗi này, bạn có thể sử dụng phương thức hasNext() để kiểm tra trước khi đọc dữ liệu.

Lỗi IllegalStateException

Lỗi này xảy ra khi phương thức được gọi trong trạng thái không hợp lệ. Ví dụ, nếu bạn đã đọc hết dữ liệu từ nguồn và tiếp tục gọi phương thức next(), lỗi IllegalStateException sẽ xảy ra. Để xử lý lỗi này, bạn có thể sử dụng phương thức hasNext() để kiểm tra trước khi gọi phương thức khác.

Cách xử lý lỗi khi sử dụng Scanner trong Java

Để xử lý các lỗi khi sử dụng Scanner trong Java, bạn có thể sử dụng cấu trúc try-catch để bắt và xử lý các ngoại lệ. Ví dụ:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("Nhập số nguyên: ");
            int num = scanner.nextInt();
            System.out.println("Số nguyên vừa nhập là: " + num);
        } catch (InputMismatchException e) {
            System.out.println("Bạn đã nhập sai kiểu dữ liệu.");
        }
    }
} 

Scanner và các kiểu dữ liệu trong Java

Lớp Scanner trong Java có thể đọc được nhiều loại dữ liệu khác nhau, bao gồm các kiểu dữ liệu cơ bản của Java như int, double, boolean, v.v. Ngoài ra, nó cũng có thể đọc được các kiểu dữ liệu đối tượng như String, Date, v.v.

scanner trong java

Làm thế nào để tối ưu hóa việc sử dụng Scanner?

Để tối ưu hóa việc sử dụng Scanner trong Java, bạn có thể áp dụng một số mẹo sau:

  • Sử dụng phương thức hasNext() để kiểm tra trước khi đọc dữ liệu.
  • Đóng đối tượng Scanner sau khi sử dụng để giải phóng bộ nhớ.
  • Sử dụng các phương thức nextLine() hoặc next() để đọc dữ liệu thay vì sử dụng các phương thức đọc kiểu cụ thể.
  • Sử dụng các biến trung gian để lưu giá trị đọc được từ Scanner, giúp cho việc xử lý dữ liệu trở nên dễ dàng hơn.

>>> Xem thêm: Ép Kiểu & Comment Source Code trong Java

So sánh Scanner với các công cụ nhập liệu khác trong Java

Trong Java, ngoài lớp Scanner, còn có một số công cụ khác để nhập liệu như BufferedReader và Console. Dưới đây là một bảng so sánh giữa lớp Scanner và các công cụ này:

Công cụ Điểm mạnh Điểm yếu
Scanner Thuận tiện và dễ sử dụng Chậm khi đọc dữ liệu
BufferedReader Nhanh khi đọc dữ liệu Phức tạp hơn khi sử dụng
Console Hỗ trợ nhập liệu từ bảng điều khiển Không thể sử dụng khi chạy ứng dụng từ bên ngoài bảng điều khiển

Tùy vào mục đích sử dụng và yêu cầu của từng dự án, bạn có thể lựa chọn công cụ phù hợp để nhập liệu.

Các lưu ý khi sử dụng Scanner

  • Tránh sử dụng phương thức next() để đọc dữ liệu từ nguồn vì nó chỉ đọc một từ hoặc một số từ đầu tiên của chuỗi ký tự.
  • Nếu bạn muốn đọc một số nguyên hoặc số thực, hãy sử dụng các phương thức nextInt() và nextDouble() thay vì next().
  • Khi sử dụng Scanner để đọc dữ liệu từ tệp, hãy chắc chắn rằng tệp đó có định dạng phù hợp với kiểu dữ liệu mà bạn muốn đọc.

Kết luận

Như vậy, qua bài viết này, TopDev đã giúp bạn hiểu rõ hơn về lớp Scanner trong ngôn ngữ lập trình java. Lớp này cung cấp cho chúng ta một cách đơn giản và thuận tiện để đọc dữ liệu đầu vào từ người dùng hoặc các nguồn khác. Hy vọng bài viết này sẽ giúp bạn áp dụng hiệu quả lớp Scanner trong các dự án của mình.

Bài viết chỉ mang tính chất tham khảo

Nội dung được tổng hợp bởi AI và điều chỉnh bởi Ban Biên tập TopDev 

Cập nhật tin tuyển dụng IT lương cao tại TopDev