Trong bài viết này, hãy cùng tìm hiểu về lớp BufferedReadervà các phương thức để tìm ra lý do vì sao nên dùng lớp Java này để nhập dữ liệu cơ sở nhé!
Vì sao nên sử dụng BufferedReader?
Khi nhập dữ liệu bằng Scanner, hẳn các bạn sẽ gặp khó khăn trong nhập dữ liệu cho cả kiểu số và kiểu String. Trong trường hợp này, chương trình lúc nhập dữ liệu sẽ thường bỏ qua 1 biến nằm giữa các biến kiểu số.
Ví dụ:
Khi chạy chương trình, chương trình sẽ bỏ qua lệnh nhập họ tên sinh viên như hình dưới:
Một giải pháp đưa ra là sử dụng lớp BufferedReader để nhập dữ liệu cho những bài tập dạng này
BufferedReader trong Java là gì?
BufferedReader là một lớp Java để đọc văn bản từ luồng đầu vào (như tệp) bằng cách đệm và đọc liền mạch các ký tự, mảng hoặc dòng.
Nói chung, mỗi yêu cầu đọc được tạo bởi Reader sẽ khiến yêu cầu đọc tương ứng được tạo từ ký tự hoặc luồng byte bên dưới.
BufferedReader để mỗi lần đọc trọn một dòng ký tự. Đối tượng BufferedReader đọc nhiều ký tự cùng lúc vào bộ đệm nhớ, tức vùng bộ nhớ dùng để lưu trữ nhóm ký tự kế tiếp từ thiết bị đầu nhập. Giải pháp bộ đệm hiệu quả hơn đọc từng ký tự đơn lẻ từ thiết bị vì đa số thiết bị đầu nhập đều có thể cung cấp dữ liệu theo nhóm cũng nhanh như chúng cung cấp một ký tự đơn.
Nhằm mục đích tận dụng đối tượng BufferedReader, hãy bao đối tượng này quanh đối tượng InputStreamReader, chính là đối tượng đang bao quanh System.in.
Dưới đây là đoạn mã chương trình:
InputStreamReader anInputStreamReader = new InputStreamReader(System.in);
BufferedReader inStream = new BufferedReader(anInputStreamReader);
* Thay vì thế, hãy kết hợp hai câu lệnh trên bởi vì chúng ta hiếm khi cần tham chiếu đến đối tượng InputStreamReader bằng mã:
BufferedReaderinStream = new BufferedReader (new InputStreamReader(System.in));
Đặc tính thuận lợi của BufferedReader là chúng ta hoàn toàn có thể sử dụng phương thức read nếu muốn đọc mỗi lần một ký tự. Do đó chúng ta chẳng mất gì nếu như chọn BufferedReader thay vì trực tiếp dùng InputStreamReader hay System.in.
Khi chọn sử dụng lớp BufferedReader và InputStreamReader ta phải nhập chúng lần lượt từ tập tin java.io.BufferedReader và java.io.InputStreamReader như sau:
import java.io.BufferedReader;
import java.io.InputStreamReader;
Lối tắt để nhập hai lớp này là java.io.*, qua đó nhập tất cả các lớp trong java.io. Giải pháp tốc hành tiện lợi này có thể tiết kiệm động tác gõ khi bạn muốn nhập nhiều lớp tương tự.
Dưới đây là khuôn mẫu ứng dụng đối tượng InputStreamReader và BufferedReader thay vì System.in.
import java.io.*;
public class classname{
public static void main(String args[]) throws java.io.IOException{
//Tạo một bộ đệm cho luồng nhập và gán nó tới lối vào chuẩn
BufferedReader inStream=new BufferedReader(new InputStreamReader(System.in));
……
}
}
Sử dụng BufferedReader để nhập dữ liệu
- Nhập 1 dòng văn bản
Sử dụng phương thức String readLine() để đọc một dòng văn bản.
Ví dụ: hoTen=nhap.readLine();
- Nhập các kiểu dữ liệu số.
Hãy sử dụng phương thức ReadLine() để đọc 1 xâu ký tự từ luồng nhập và bao phương thức ReadLine() này bằng các phương thức dưới:
-
- Với kiểu int chúng ta sẽ sử dụng phương thức Integer.parseInt();
- Với kiểu double chúng ta sẽ sử dụng phương thức Double.parseDouble();
- Với kiểu float chúng ta sẽ sử dụng phương thức Float.parseFloat()
- ……….
Ví dụ cụ thể
Dưới đây là một chương trình đọc vào từ bàn phím thông tin một sinh viên với mã số sinh viên, họ tên, điểm thi, và kết quả.
Kết quả:
Trên đây là những thông tin và cách sử dụng BufferedReader để nhập dữ liệu cơ sở một cách hiệu quả. Chúc các bạn sinh viên Cao đẳng FPT Mạng cá cược bóng đá áp dụng bài học thành công nhé!
Bộ môn CNTT
Cao đẳng FPT Mạng cá cược bóng đá
Hà Nội