Scanner trong Java là gì? Có rất nhiều thảo luận về lớp đặc biệt này trong Java. Cùng CodeGym Hà Nội tìm hiểu, thảo luận về phương thức của nó và hàm tạo lớp trong Java nhé!

Scanner trong java là gì?

Có nhiều bạn hỏi “Scanner java là gì?” hay “Scanner trong java là gì?”

scanner-trong-java-la-gi-codegym-ha-noi

Scanner trong Java là gì?

Scanner trong Java là lớp được dùng để đọc dữ liệu đầu vào từ các nguồn khác nhau như luồng đầu vào, người dùng, tệp. Đây là lớp có trong gói java.util, và gói này cần được nhập vào bên trong chương trình java để lớp scanner được chạy. Với nhiều phương thức được xác định trước trong lớp java.util.Scanner để thực hành các hoạt động khác nhau như: đọc hay phân tách cú pháp những kiểu nguyên thủy khác nhau. Bằng cách dùng biểu thức chính quy, lớp Scanner cũng có thể phân tích cú pháp dạng chuỗi và kiểu nguyên thủy

Lớp Scanner trong Java mở rộng lớp Object và triển khai được các giao diện Cloneable và Iterator.

Nhập lớp Scanner trong Java

Để dùng những phương thức và chức năng của lớp Scanner, chúng ta cần nhập lớp vào chương trình Java của mình bằng cách nhập gói java.util bằng phương pháp dùng từ khóa import ở đầu mã.

Hai cách mà ta có thể làm như sau:

  1. import java.util.Scanner;

//nhập lớp Scanner trong Java

  1. import java.util.*;

//nhập hết những lớp của gói trong java.util

Dùng lớp Scanner trong Java

Nhập lớp Scanner xong, chúng ta phải lấy kết quả thể hiện của lớp này để đọc đầu vào từ người dùng.

Ví dụ:

Ta sẽ thực hiện một thí dụ như sau.

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("Nhap mot tu bat ky: ");
    String chuoi_ky_tu = input.nextLine();
    System.out.println(chuoi_ky_tu);
    input.close();
  }
}

Kết quả:

Nhap mot tu bat ky: xin chao
xin chao

Trong ví dụ trên, câu lệnh:

Scanner input = new Scanner(System.in);

Ở đây, ta đã tạo một đối tượng của lớp Scanner có tên là input. Tham số System.in được dùng để lấy đầu vào. Tiếp theo, ta đã dùng phương thức nextLine() của lớp Scanner để đọc một chuỗi ký tự từ người dùng.

Từ ví dụ trên, ta cần thêm gói java.util.Scanner trước khi có thể dùng lớp Scanner.

import java.util.Scanner;

>> Đọc thêm: Khóa học lập trình Java

Hàm tạo của lớp Scanner trong Java

STT

Hàm tạo

Mô tả

1Scanner (Nguồn tệp)làm  đối tượng Scanner tạo ra những giá trị được quét từ tệp được chỉ định
2Scanner (File source, String charsetName)xây dựng đối tượng Scanner tạo ra các giá trị được quét từ tệp được chỉ định
3Scanner (InputStream source)tạo ra 1 đối tượng Scanner mới tạo ra các giá trị được quét từ luồng đầu vào được chỉ định.
4Scanner (InputStream source, String charsetName)tạo 1 Scanner mới tạo ra các giá trị được quét từ luồng đầu vào được chỉ định.
5Scanner (Readable source)tạo 1 Scanner mới tạo ra các giá trị được quét từ nguồn được chỉ định.
6Scanner (String source)tạo 1 Scanner mới tạo ra các giá trị được quét từ chuỗi được chỉ định.
7Scanner (ReadableByteChannel source)tạo 1 Scanner mới tạo ra các giá trị được quét từ kênh được chỉ định.
8Scanner (ReadableByteChannel source, String charsetName)tạo 1 Máy quét mới tạo ra các giá trị được quét từ kênh được chỉ định.
9Scanner (Path source)tạo 1 Scanner mới tạo ra các giá trị được quét từ tệp được chỉ định.
10Scanner (Path source, String charsetName)tạo 1 Scanner mới tạo ra các giá trị được quét từ tệp được chỉ định

Các phương thức của lớp Scanner để lấy đầu vào

Lớp Scanner cung cấp các phương thức khác nhau cho phép chúng ta đọc các đầu vào thuộc các kiểu khác nhau.

Phương thứcMô tả
nextInt()Đọc một giá trị kiểu int.
nextFloat()Đọc một giá trị kiểu float.
nextBoolean()Đọc một giá trị kiểu Boolean.
nextLine()Đọc một dòng văn bản.
next()Đọc một từ.
nextByte()Đọc một giá trị ở dạng byte.
nextDouble()Đọc một giá trị kiểu double.
nextShort()Đọc một giá trị kiểu short.
nextLong()Đọc một giá trị kiểu long.

Có thể hiểu phương thức của Scanner bằng một ví dụ thực tiễn sau:

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Nhap mot so nguyen: ");
    int a = input.nextInt();
    System.out.println(a);
    input.close();
  }
}

Kết quả:

Nhap mot so nguyen:
4
4 hasNextXYZ () 

Trong ví dụ trên, chúng ta đã dùng phương thức nextInt() để đọc 1 giá trị là số nguyên.

Nextline trong java là gì?
Hasnextline trong java là gì

Đôi lúc ta cần kiểm tra xem giá trị tiếp theo ta đọc có thuộc một loại nào không, hoặc đầu vào có EOF hay không. Tiếp theo, mình nên kiểm tra xem đầu vào của máy quét có thuộc loại mình muốn hay không? Với sự trợ giúp của các hàm hasNextXYZ () trong đó XYZ là kiểu dữ liệu mà minh muốn dùng. Phương thức trả về true (đúng) khi máy quét có mã thông báo thuộc loại đó ngược lại trả về false (sai). Với một số phương thức boolean cho mỗi mẫu dữ liệu. Để ta rà soát xem mã thông báo tiếp theo của một mẫu dữ liệu cụ thể có sẵn trong đầu vào nhất định hay không?

Ta có bảng sau:

Phương thứcMô tả
boolean hasNextBoolean ()kiểm tra mã thông báo tiếp theo trong đầu vào của máy quét này có hiểu Boolean bằng phương thức nextBoolean () hay không
boolean hasNextByte ()kiểm tra xem mã thông báo tiếp theo trong đầu vào của máy quét này có hiểu là Byte bằng cách dùng phương thức nextByte () hay không
boolean hasNextDouble ()kiểm tra mã thông báo tiếp theo trong máy quét này có phải đầu vào BigDecimal bằng cách dùng phương thức nextBigDecimal () hay không
boolean hasNextFloat ()Phương pháp này kiểm tra xem mã thông báo tiếp theo trong đầu vào của máy quét này có hiểu một Float bằng cách dùng phương thức nextFloat () hay không
boolean hasNextInt ()kiểm tra mã thông báo tiếp theo trong đầu vào của máy quét này có hiểu một int dùng phương thức nextInt () hay không
boolean hasNextLine ()kiểm tra có dòng khác trong đầu vào của máy quét này hay không
boolean hasNextLong ()kiểm tra mã thông báo tiếp theo trong đầu vào của máy quét này có hiểu Long bằng phương thức nextLong () hay không.

Cách thức hoạt động của Lớp Scanner

Lớp Scanner đọc toàn bộ dòng ký tự và chia thành các token. Ta có thể tạm hiểu token là các thành phần nhỏ có ý nghĩa đối với trình biên dịch trong Java.

Ví dụ: Giả sử có một chuỗi đầu vào như sau.

Xin chao moi nguoi

Trong trường hợp này, đối tượng lớp Scanner sẽ đọc toàn bộ dòng ký tự và chia thành các token: “Xin”, “chao”, “moi” và “nguoi”. Đối tượng sau đó thực hiện vòng lặp duyệt qua từng token và đọc từng token bằng các phương thức khác nhau.

Chú ý: Theo mặc định, khoảng trắng sẽ được dùng để phân chia các token.

Trên đây là khái niệm và ví dụ cơ bản về lớp Scanner trong Java. Hy vọng các bạn có thể áp dụng được vào trong chương trình của mình. Mọi người hãy tiếp tục theo dõi các bài tiếp theo và cập nhật các bài mới nhất trên CodeGym Hà Nội nhé!

Kết luận

Lớp Scanner trong Java bạn có thể hiểu và tưởng tượng là một “cái máy in”, có thể nhập và xuất ra dữ liệu. Bài viết trên đã giới thiệu cho bạn về lớp Scanner trong Java, cho bạn rõ hơn định nghĩa Scanner trong Java là gì? Và các phương thức và hàm tạo của lớp Scanner. Mong rằng bạn có thể hiểu rõ hơn về Scanner trong Java qua bài viết này. Tìm hiểu thêm về Java và các ngôn ngữ lập trình khác qua các khóa học lập trình chuyển nghiệp tại CodeGym Hà Nội bạn nhé!

Tin bài liên quan:

10 lý do giúp bạn giải đáp thắc mắc: “có nên học java web?”

 

Full lộ trình học ngôn ngữ lập trình java hiệu quả nhất cho Newbie