Java là một ngôn ngữ lập trình mạnh mẽ và linh hoạt, nổi tiếng với khả năng chạy trên nhiều nền tảng khác nhau. Một trong những tính năng quan trọng của Java là khả năng sử dụng đối số dòng lệnh (command-line arguments). Bài viết này sẽ giải thích chi tiết về cách sử dụng đối số dòng lệnh trong Java, kèm theo các ví dụ minh họa cụ thể để bạn dễ dàng nắm bắt.
Mục Lục
Đối Số Dòng Lệnh (Arguments) Trong Java Là Gì?
Đối số dòng lệnh là những giá trị được truyền vào chương trình Java khi chương trình đó được thực thi. Chúng cung cấp một cách để tùy chỉnh hành vi của chương trình mà không cần phải sửa đổi mã nguồn. Các đối số này được truyền dưới dạng một mảng các chuỗi (String array) đến phương thức main()
của chương trình.
public class ViDu {
public static void main(String[] args) {
// Mã chương trình ở đây
}
}
Trong đoạn code trên, args
là một mảng các chuỗi chứa các đối số dòng lệnh.
Để biên dịch và chạy chương trình Java với đối số dòng lệnh, bạn thực hiện các bước sau:
- Lưu chương trình vào một file có phần mở rộng
.java
. Ví dụ:ViDu.java
. - Mở cửa sổ dòng lệnh (Command Prompt trên Windows, Terminal trên macOS/Linux) và di chuyển đến thư mục chứa file
.java
. - Biên dịch chương trình bằng lệnh:
javac ViDu.java
. - Chạy chương trình với các đối số bằng lệnh:
java ViDu tham_so_1 tham_so_2 ... tham_so_n
.
Lưu ý: Đảm bảo rằng Java đã được cài đặt và đường dẫn (PATH) đã được cấu hình chính xác.
Minh họa cách truyền đối số dòng lệnh vào chương trình Java thông qua command line.
Ví Dụ Cụ Thể Về Sử Dụng Đối Số Dòng Lệnh Trong Java
Để hiểu rõ hơn về cách sử dụng đối số dòng lệnh, chúng ta sẽ xem xét một vài ví dụ cụ thể.
1. Tính Giai Thừa Của Một Số
Chương trình sau tính giai thừa của một số nguyên dương được truyền vào từ dòng lệnh:
public class GiaiThua {
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("Vui long nhap mot so nguyen duong.");
System.exit(1);
}
try {
int n = Integer.parseInt(args[0]);
if (n < 0) {
System.out.println("Vui long nhap so nguyen duong.");
System.exit(1);
}
long giaiThua = 1;
for (int i = 1; i <= n; i++) {
giaiThua *= i;
}
System.out.println("Giai thua cua " + n + " la: " + giaiThua);
} catch (NumberFormatException e) {
System.out.println("Dinh dang so khong hop le.");
System.exit(1);
}
}
}
Giải thích:
- Chương trình kiểm tra xem có đúng một đối số được truyền vào hay không. Nếu không, chương trình sẽ in ra thông báo lỗi và thoát.
- Chương trình sử dụng
Integer.parseInt()
để chuyển đổi đối số từ chuỗi sang số nguyên. - Chương trình tính giai thừa bằng vòng lặp
for
. - Nếu đối số không phải là một số nguyên hợp lệ, chương trình sẽ bắt ngoại lệ
NumberFormatException
và in ra thông báo lỗi.
Ví dụ chạy chương trình:
javac GiaiThua.java
java GiaiThua 5
Kết quả:
Giai thua cua 5 la: 120
Kết quả chương trình tính giai thừa số 5 khi chạy trên command line, cho ra kết quả 120.
2. Tính Tổng Hai Số
Chương trình sau tính tổng của hai số nguyên được truyền vào từ dòng lệnh:
public class TongHaiSo {
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("Vui long nhap hai so nguyen.");
System.exit(1);
}
try {
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
int tong = a + b;
System.out.println("Tong cua " + a + " va " + b + " la: " + tong);
} catch (NumberFormatException e) {
System.out.println("Dinh dang so khong hop le.");
System.exit(1);
}
}
}
Giải thích:
- Chương trình kiểm tra xem có đúng hai đối số được truyền vào hay không. Nếu không, chương trình sẽ in ra thông báo lỗi và thoát.
- Chương trình sử dụng
Integer.parseInt()
để chuyển đổi cả hai đối số từ chuỗi sang số nguyên. - Chương trình tính tổng của hai số và in ra kết quả.
- Nếu một trong hai đối số không phải là một số nguyên hợp lệ, chương trình sẽ bắt ngoại lệ
NumberFormatException
và in ra thông báo lỗi.
Ví dụ chạy chương trình:
javac TongHaiSo.java
java TongHaiSo 10 20
Kết quả:
Tong cua 10 va 20 la: 30
Những Điểm Quan Trọng Cần Nhớ Khi Sử Dụng Đối Số Dòng Lệnh
- Kiểm tra số lượng đối số: Luôn kiểm tra số lượng đối số được truyền vào để tránh lỗi.
- Chuyển đổi kiểu dữ liệu: Các đối số dòng lệnh luôn được truyền dưới dạng chuỗi. Bạn cần chuyển đổi chúng sang kiểu dữ liệu phù hợp (ví dụ: số nguyên, số thực) trước khi sử dụng.
- Xử lý ngoại lệ: Khi chuyển đổi kiểu dữ liệu, hãy luôn sử dụng khối
try-catch
để xử lý các ngoại lệ có thể xảy ra (ví dụ:NumberFormatException
). - Không giới hạn số lượng đối số: Bạn có thể truyền bất kỳ số lượng đối số nào vào chương trình Java của mình.
- Sử dụng cho cấu hình: Đối số dòng lệnh rất hữu ích để truyền thông tin cấu hình cho chương trình của bạn.
Mô tả luồng xử lý đối số dòng lệnh trong Java, từ lúc nhận đến khi sử dụng.
Kết Luận
Đối số dòng lệnh là một công cụ mạnh mẽ cho phép bạn tùy chỉnh hành vi của chương trình Java một cách linh hoạt. Bằng cách nắm vững cách sử dụng đối số dòng lệnh, bạn có thể tạo ra các chương trình mạnh mẽ và dễ sử dụng hơn. Hy vọng rằng bài viết này đã cung cấp cho bạn một cái nhìn tổng quan về đối số dòng lệnh trong Java và cách sử dụng chúng trong thực tế. Chúc bạn thành công trên con đường chinh phục ngôn ngữ lập trình Java!