Bài 9: Nhập và xuất dữ liệu trong Java
1. Các phần tử cơ sở của Java:
Cũng giống như các ngôn ngữ lập trình khác, ngôn ngữ lập trình Java được định nghĩa bằng tập các quy tắc của văn phạm cho phép kiểm tra xem các cấu trúc được xây dựng từ các phần tử ngôn ngữ có hợp lệ hay không và thông qua các định nghĩa về mặt ngữ nghĩa để kiểm chứng ý nghĩa của các cấu trúc đó. Nếu các bạn độc giả nào đang theo học trong những môi trường học thuật như Đại học, cao đẳng mà đúng chuyên môn về công nghệ thông tin thì chắc hẳn không con lạ lẫm với hai môn “Otomat và ngôn ngữ hình thức” và môn “Chương trình dịch”, xin phép các bạn chút xíu thời gian để nói qua về môn “Chương trình dịch” nhé vì mình cũng có vài video về môn này. Xem tại đây
Mục đích môn học:
- Hiểu nguyên lý của một chương trình dịch, tổng quan về các loại chương trình dịch.
- Hiểu được cấu trúc thành phần của một chương trình dịch.
- Áp dụng được các kiến thức về ngôn ngữ hình thức trong thực hành chương trình dịch.
- Nắm vững về lý thuyết về xây dựng chương trình dịch, tập trung vào phân tích từ vựng, phân tích cú pháp.
- Có khả năng tự xây dựng được các thành phần trong chương trình dịch, tập trung vào: phân tích từ vựng, phân tích cú pháp.
–> Ta phải tuân theo các quy tắc đã được xây dựng từ trước khi lập trình với Java.
1.1. Định danh:
Tên gọi của các thành phần trong chương trình được gọi là định danh (Identifier). Định danh được sử dụng để xác định các phần tử như biến, kiểu, phương thức (method) hay còn gọi là hàm (function), đối tượng, …
Trong Java, định danh là một dãy các ký tự gồm các chữ cái, chữ số và một số các ký hiệu như: ký hiệu gạch dưới nối câu ‘_’, các ký hiệu tiền tệ $, £, ¥, ¢ và không được bắt đầu bằng chữ số (0, …, 9)
Java phân biệt chữ thường và chữ hoa. Ví dụ Hoa và hoa là hai định danh khác nhau. Độ dài (số lượng ký tự) của định danh trong Java về lý thuyết là không bị giới hạn
Xu hướng chung hiện nay là nên sử dụng cách đặt tên theo một chuẩn nhất định để phân biệt được các loại khác nhau của các thành phần sử dụng. Đặc biệt là khi làm việc trong teamwork thì các quy tắc đã thống nhất là rất quan trọng, dễ dàng trao đổi, phát triển và bảo trì. Quy ước thống nhất cách đặt tên như sau:
- Định danh cho các lớp: chữ cái đầu của mỗi từ trong định danh đều viết hoa –> Quy tắc Lạc đà (Camel Case). Ví dụ: HocSinh, KhachHang, Sach.
- Định danh cho các biến, phương thức, đối tượng: chữ cái đầu của mỗi từ trong định danh đều viết hoa từ từ đầu tiên. Ví dụ: hoTen, lop, diaChi, soLuongTrang.
1.2. Các từ khóa:
Các từ khóa của một ngôn ngữ lập trình là những định danh đã định sẵn được định nghĩa trước của một ngôn ngữ và không thể sử dụng cho những mục đích khác. Các từ khóa của Java có thể chia thành 09 nhóm như sau:
Chức năng | Từ khóa |
---|---|
Tổ chức các lớp | package, import |
Định nghĩa các lớp | interface, class, extends, implements |
Các từ khóa cho các biến và các lớp | abstract, public, private, protected, static, synchronized, volatile, final, native |
Các kiểu nguyên thủy | long, int, short, byte, char, float, double, boolean, void |
Những từ khóa cho các giá trị và các biến | false, true, this, super, null |
Xử lý ngoại lệ | throw, throws, try, catch, finally |
Tạo lập và kiểm tra các đối tượng | new, instanceof |
Dòng điều khiển | switch, case, default, break, if, else, continue, return, do, while, for |
Những từ khóa chưa được sử dụng | byvalue, const, goto, cast |
1.3. Chú thích (Comment):
Trong các chương trình thường cần phải có những đoạn tư liệu giải thích công việc hoặc cách thực hiện để người đọc hiểu và tiện theo dõi. Những phần giải thích đó chỉ nhằm làm tư liệu và được các bộ trình biên dịch bỏ qua. Java cung cấp 3 loại chú thích chương trình:
- Chú thích trên một dòng
- Chú thích trên nhiều dòng
- Chú thích trong tư liệu (javadoc)
1.3.1. Chú thích trên một dòng
Tất cả các ký tự sau // cho đến cuối dòng là chú thích.
1.3.2. Chú thích trên một dòng
Giống như trong C/C++, phần nằm giữa /* và */ là chú thích.
1.3.3. Chú thích trên một dòng
Đây là loại chú thích đặc biệt vào những chỗ thích hợp trong chương trình để javadoc và sử dụng để tạo ra tư liệu dạng HTML cho chương trình. Chúng được đặt vào trước phần định nghĩa các lớp, interface, phương thức và biến. Phần chú thích trong tư liệu được bắt đầu bằng /** và kết thúc bằng */
Ví dụ:
/**
* Lớp này nhắm mục đích lấy ví dụ.
* Author: Hoàng Văn Tuân.
* Ngày: 26/07/2021
*/
1. Đặt tên Package.
Tên Package phải tuân theo quy tắc chung ở trên và phải viết thường.
2. Đặt tên Project.
Tên Project phải tuân theo quy tắc chung ở trên và chữ cái đầu tiên của mỗi từ phải viết hoa.
2. Nhập dữ liệu từ bàn phím với Scanner:
Đầu tiên các bạn phải import lớp Scanner vào nhé
package nhap;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
}
}
Sau đó các bạn khởi tạo một đối tượng sc thuộc lớp Scanner bằng câu lệnh:
Scanner sc=new Scanner(System.in);
Đối tượng sc sẽ giúp các bạn nhập dữ liệu từ bàn phím.
int a1 = sc.nextInt(); // Nhập dữ liệu kiểu int
float a2 = sc.nextFloat(); // Nhập dữ liệu kiêu float
byte a3 = sc.nextByte(); // Nhập dữ liệu kiểu byte
double a4 = sc.nextDouble(); // Nhập dữ liệu kiểu double
Và các từ khóa như int, float, … là gì và chúng có ý nghĩa gì thì mình sẽ trình bày với các bạn ở bài sau nhé. Hiện tại thì các bạn hiểu đơn giản là “Nồi nào úp vung nấy”.
Tóm lại ta có các phương thức thường dùng trong lớp Scanner để nhập dữ liệu là:
Tên phương thức | Mục đích |
---|---|
nextBoolean | Nhập vào kiểu Boolean ( true – false) từ bàn phím |
nextByte | Nhập vào kiểu dữ liệu Byte |
nextShort | Nhập vào kiểu Short ( số nguyên từ -32768 đến 32767) |
nextInt | Nhập vào kiểu số nguyên từ bàn phím |
nextFloat | Nhập vào kiểu số thực |
nextDouble | Nhập vào kiểu Double ( số thực lớn hơn float) |
nextLine | Nhập vào kiểu String ( String trong java giống char luôn nhé!) |
nextLong | Nhập vào số nguyên lớn |
3. Cách xuất dữ liệu ra màn hình:
Trong Java bấy lâu nay, thường chúng ta tiếp xúc và làm việc nhiều với hai câu lệnh xuất cơ bản là print và println.
Nhưng trên thực tế, ta còn có phương phức printf, trông có vẻ giống người hàng xóm C nhưng tính năng mà Java đem lại với printf là một phương thức rất hữu ích trong thực tế.
Để làm rõ điều này, chúng ta cùng điểm qua xem 3 anh em nhà đó khác nhau như thế nào:
- Với Print: Xuất kết quả ra màn hình nhưng con trỏ chuột không xuống dòng.
- Với Println: Xuất kết quả ra màn hình đồng thời con trỏ chuột nhảy xuống dòng tiếp theo.
- Với Printf: Xuất ra màng hình kết quả đồng thời có thể định dạng được kết quả đó nhờ vào các đối số thích hợp.
Trong đó:
- Local: Nếu khác null sẽ được tự động định dạng theo khu vực.
- format: Quy định chuẩn định dạng đầu ra cho các đối số
- Các argument: Đối số cần định dạng.
Các bộ định dạng có sẵn trong Printf:
- %c: Ký tự
- %d: Số thập phân (số nguyên) (cơ số 10)
- %e: Dấu phẩy động theo cấp số nhân
- %f: Dấu phẩy động
- %i: Số nguyên (cơ sở 10)
- %o: Số bát phân (cơ sở 8)
- %s: Chuỗi
- %u: Số thập phân (số nguyên) không dấu
- %x: Số trong hệ thập lục phân (cơ sở 16)
- %t: Định dạng ngày / giờ
- %%: Dấu phần trăm
- \%: Dấu phần trăm
Ví dụ 1: Hiển thị số thực theo định dạng mong muốn (Tương tự như C)
package xuat;
public class Printf
{
public static void main(String args[]){
System.out.printf("Lam tron 3.1456 la: %.2f", 3.1456);
}
}
Ví dụ 2: Hiển thị thông tin ngày tháng năm hiện tại
package xuat;
import java.util.Date;
public class Printf
{
public static void main(String args[]){
Date date = new Date();
System.out.printf("%tT%n", date);
System.out.printf("H : %tH, M: %tM, S: %tS%n",date,date,date);
System.out.printf("%s %tb %<te, %<ty", "Ngày hiện tại: ", date);
}
}