Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Scanner trong Java và các phương thức của nó với sự trợ giúp của các ví dụ.

lớp Scanner của gói java.util phần mềm được sử dụng để đọc dữ liệu đầu vào từ các nguồn khác nhau như suối đầu vào, người dùng, tập tin, vv Hãy lấy một ví dụ.

1. Ví dụ 1: Đọc một dòng văn bản bằng máy quét

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

import java.util.Scanner;

class Main {
  public static void main(String[] args) {

    // creates an object of Scanner
    Scanner input = new Scanner(System.in);

    System.out.print("Enter your name: ");

    // takes input from the keyboard
    String name = input.nextLine();

    // prints the name
    System.out.println("My name is " + name);

    // closes the scanner
    input.close();
  }
}

Đầu ra

Enter your name: Kelvin
My name is Kelvin

Trong ví dụ trên, hãy để ý dòng

Scanner input = new Scanner(System.in);

Ở đây, chúng tôi đã tạo một đối tượng Scanner có tên đầu vào.

tham số System.in được sử dụng để lấy đầu vào từ đầu vào tiêu chuẩn. Nó hoạt động giống như lấy đầu vào từ bàn phím.

Sau đó, chúng tôi đã sử dụng phương thức nextLine() của lớp Scanner để đọc một dòng văn bản từ người dùng.

Bây giờ bạn đã có một số ý tưởng về nó Scanner, hãy cùng khám phá thêm về nó.

2. Nhập lớp máy quét

Như chúng ta có thể thấy từ ví dụ trên, chúng ta cần nhập gói java.util.Scanner trước khi có thể sử dụng lớp Scanner.

import java.util.Scanner;

Để tìm hiểu thêm về cách nhập gói, hãy truy cập Gói Java .

3. Tạo một đối tượng máy quét trong Java

Sau khi chúng tôi nhập gói, đây là cách chúng tôi có thể tạo Scanner các đối tượng.

// read input from the input stream
Scanner sc1 = new Scanner(InputStream input);

// read input from files
Scanner sc2 = new Scanner(File file);

// read input from a string
Scanner sc3 = new Scanner(String str);

Ở đây, chúng ta đã tạo các đối tượng của lớp Scanner sẽ đọc đầu vào từ InputStream , File và String tương ứng.

4. Phương thức máy quét Java để lấy đầu vào

lớp Scanner cung cấp phương thức khác nhau mà cho phép chúng ta đọc đầu vào của các loại khác nhau.

phương thứcSự miêu tả
nextInt()đọc một giá trị int từ người dùng
nextFloat()đọc một dạng giá trị float cho người dùng
nextBoolean()đọc mộtgiá trị boolean từ người dùng
nextLine()đọc một dòng văn bản từ người dùng
next()đọc một từ từ người dùng
nextByte()đọc một giá trị byte từ người dùng
nextDouble()đọc một giá trị doubl e từ người dùng
nextShort()đọc một giá trị short từ người dùng
nextLong()đọc một giá trị long từ người dùng

4.1 Ví dụ 2: Scanner trong Java nextInt ()

import java.util.Scanner;

class Main {
  public static void main(String[] args) {

    // creates a Scanner object
    Scanner input = new Scanner(System.in);

    System.out.println("Enter an integer: ");

    // reads an int value
    int data1 = input.nextInt();

    System.out.println("Using nextInt(): " + data1);

    input.close();
  }
}

Đầu ra

Enter an integer:
22
Using nextInt(): 22

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

4.2 Ví dụ 3: Máy quét Java nextDouble ()

import java.util.Scanner;

class Main {
  public static void main(String[] args) {

    // creates an object of Scanner
    Scanner input = new Scanner(System.in);
    System.out.print("Enter Double value: ");

    // reads the double value
    double value = input.nextDouble();
    System.out.println("Using nextDouble(): " + value);

    input.close();
  }
}

Đầu ra

Enter Double value: 33.33
Using nextDouble(): 33.33

Trong ví dụ trên, chúng ta đã sử dụng phương thức nextDouble() để đọc một giá trị dấu phẩy động.

4.3 Ví dụ 4: Scanner Java next()

import java.util.Scanner;

class Main {
  public static void main(String[] args) {

    // creates an object of Scanner
    Scanner input = new Scanner(System.in);
    System.out.print("Enter your name: ");

    // reads the entire word
    String value = input.next();
    System.out.println("Using next(): " + value);

    input.close();
  }
}

Đầu ra

Enter your name: Jonny Walker
Using next(): Jonny

Trong ví dụ trên, chúng tôi đã sử dụng phương thức next() để đọc một chuỗi từ người dùng.

Ở đây, chúng tôi đã cung cấp tên đầy đủ. Tuy nhiên, phương thức next() chỉ đọc tên đầu tiên.

Điều này là do phương thức next() đọc đầu vào lên đến tự khoảng trắng . Khi gặp phải khoảng trắng , nó sẽ trả về chuỗi (không bao gồm khoảng trắng).

4.4 Ví dụ 5: Scanner trong  Java nextLine ()

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

import java.util.Scanner;

class Main {
  public static void main(String[] args) {

    // creates an object of Scanner
    Scanner input = new Scanner(System.in);
    System.out.print("Enter your name: ");

    // reads the entire line
    String value = input.nextLine();
    System.out.println("Using nextLine(): " + value);

    input.close();
  }
}

Đầu ra

Enter your name: Jonny Walker
Using nextLine(): Jonny Walker

Trong ví dụ đầu tiên, chúng tôi đã sử dụng phương thức nextLine() để đọc một chuỗi từ người dùng.

Không giống như phương thức next(), nextLine()đọc toàn bộ dòng đầu vào bao gồm cả khoảng trắng. Phương thức bị kết thúc khi nó gặp một ký tự dòng tiếp theo \n,.

Khuyến nghị đọc: Máy quét Java bỏ qua nextLine () .

5. Scanner trong Java với BigInteger và BigDecimal

Máy quét Java cũng có thể được sử dụng để đọc số nguyên lớn và số thập phân lớn.

  • nextBigInteger () – đọc giá trị số nguyên lớn từ người dùng
  • nextBigDecimal () – đọc giá trị thập phân lớn từ người dùng

5.5 Ví dụ 4: Đọc BigInteger và BigDecimal

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

class Main {
  public static void main(String[] args) {

    // creates an object of Scanner
    Scanner input = new Scanner(System.in);
    System.out.print("Enter a big integer: ");

    // reads the big integer
    BigInteger value1 = input.nextBigInteger();
    System.out.println("Using nextBigInteger(): " + value1);

    System.out.print("Enter a big decimal: ");

    // reads the big decimal
    BigDecimal value2 = input.nextBigDecimal();
    System.out.println("Using nextBigDecimal(): " + value2);

    input.close();
  }
}

Đầu ra

Enter a big integer: 987654321
Using nextBigInteger(): 987654321
Enter a big decimal: 9.55555
Using nextBigDecimal(): 9.55555

Trong ví dụ trên, chúng ta đã sử dụng gói java.math.BigInteger và java.math.BigDecimal để đọc BigIntegervà BigDecimal tương ứng.

6. Hoạt động của Máy quét Java

lớp Scannertoàn bộ một dòng và chia dòng vào thẻ. Token là các phần tử nhỏ có một số ý nghĩa đối với trình biên dịch Java. Ví dụ,

Giả sử có một chuỗi đầu vào:

He is 22

Trong trường hợp này, đối tượng máy quét sẽ đọc toàn bộ dòng và chia chuỗi thành các mã thông báo: ” He “, ” is ” và ” 22 “. Đối tượng sau đó lặp lại từng mã thông báo và đọc từng mã thông báo bằng các phương thức khác nhau của nó.

Lưu ý : Theo mặc định, khoảng trắng được sử dụng để chia các mã thông báo.

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!