Tôi đang cố gắng phát hiện xem 'a' có được nhập làm đối số chuỗi đầu tiên hay không.Đối số dòng lệnh Java
Trả lời
public class YourClass {
public static void main(String[] args) {
if (args.length > 0 && args[0].equals("a")){
//...
}
}
}
Phương thức main
của bạn có đối số String[]
. Có chứa các đối số đã được chuyển đến các ứng dụng của bạn (nó thường được gọi là args
, nhưng đó không phải là một yêu cầu).
Đối số dòng lệnh được chuyển trong tham số String[]
đầu tiên đến main()
, ví dụ:
public static void main(String[] args) {
}
Trong ví dụ trên, args
chứa tất cả các đối số dòng lệnh.
ngắn, câu trả lời ngọt ngào cho câu hỏi đặt ra là: đối số dòng
public static void main(String[] args) {
if(args.length > 0 && args[0].equals("a")) {
// first argument is "a"
} else {
// oh noes!?
}
}
lệnh có thể truy cập thông qua String[] args
tham số của main
phương pháp.
Đối số đầu tiên bạn có thể kiểm tra args[0]
toàn bộ mã sẽ trông như thế
public static void main(String[] args) {
if ("a".equals(args[0])) {
// do something
}
}
chương trình
Mỗi Java bắt đầu với
public static void main(String[] args) {
Đó mảng kiểu String
rằng main()
mất như một tham số giữ các đối số dòng lệnh cho chương trình của bạn. Nếu người dùng chạy chương trình của bạn dưới dạng
$ java myProgram a
thì args[0]
sẽ giữ chuỗi "a".
Như mọi người khác đã nói ... phương pháp .equals là những gì bạn cần.
Trong tắt cơ hội bạn sử dụng một cái gì đó như:
if(argv[0] == "a")
sau đó nó không hoạt động vì == so sánh vị trí của hai đối tượng (bình đẳng vật lý) chứ không phải là nội dung (bình đẳng logic).
Vì "a" từ dòng lệnh và "a" trong nguồn cho chương trình của bạn được cấp phát ở hai vị trí khác nhau, nên không thể sử dụng ==. Bạn phải sử dụng phương thức equals để kiểm tra xem cả hai chuỗi có cùng ký tự hay không.
Một lưu ý khác ... "a" == "a" sẽ hoạt động trong nhiều trường hợp, bởi vì Chuỗi là đặc biệt trong Java, nhưng 99.99999999999999% thời gian bạn muốn sử dụng .equals.
Sử dụng apache commons cli nếu bạn dự định mở rộng quá khứ đó cho một đơn vị duy nhất.
"Thư viện CLI của Apache Commons cung cấp API để phân tích cú pháp các tùy chọn dòng lệnh được chuyển tới các chương trình."
Commons CLI hỗ trợ các loại khác nhau của các tùy chọn:
- POSIX như tùy chọn (. Tức là tar -zxvf foo.tar.gz)
- GNU như tùy chọn dài (tức là du --human có thể đọc được. max-depth = 1)
- Java như các thuộc tính (ví dụ. java -Djava.awt.headless = true -Djava.net.useSystemProxies = true Foo)
- tùy chọn ngắn với giá trị đính kèm (tức là gcc -O2. foo.c)
- tùy chọn dài với dấu gạch nối đơn (ví dụ: ant -projec thelp)
Cố gắng vượt qua giá trị a và so sánh bằng cách sử dụng phương pháp bình đẳng như thế này:
public static void main(String str[]) {
boolean b = str[0].equals("a");
System.out.println(b);
}
theo liên kết này để biết thêm về Command line argument in Java
Đây không phải là 'null'-an toàn ... – Samoth
đối số dòng lệnh được lưu trữ như các chuỗi trong các String
mảng String[] args that is passed to
chính() `.
java [program name] [arg1,arg2 ,..]
Đối số dòng lệnh là đầu vào chấp nhận từ dấu nhắc lệnh trong khi chạy chương trình. Các đối số thông qua có thể là bất cứ điều gì. Được lưu trữ trong mảng args[]
.
//Display all command line information
class ArgDemo{
public static void main(String args[]){
System.out.println("there are "+args.length+"command-line arguments.");
for(int i=0;i<args.length;i++)
System.out.println("args["+i+"]:"+args[i]);
}
}
Ví dụ:
java Argdemo one two
Kết quả sẽ là: [? Làm thế nào để phân tích đối số dòng lệnh trong Java]
there are 2 command line arguments:
they are:
arg[0]:one
arg[1]:two
Trong ví dụ của bạn, dòng đầu tiên' javastack.java.' có nghĩa là gì ? Tôi không biết chắc chắn 'It' trong' Nó được sử dụng để chấp nhận đầu vào từ dấu nhắc lệnh trong khi chạy chương trình.' là đề cập đến, nhưng trình tự là 1) phân tích cú pháp lệnh 2) các tham số thiết lập 3) chạy chương trình. Tôi không biết chắc chắn 'This' trong' Điều này về cơ bản tăng tốc độ thực hiện chương trình khi chương trình phụ thuộc vào input.' của người dùng là đề cập đến, nhưng không có gì trong _parameter passing_ để _speed lên chương trình execute_. – greybeard
- 1. Java: Kiểm tra xem đối số dòng lệnh là null
- 2. không gian trong đối số dòng lệnh Java
- 3. gruntjs - đối số dòng lệnh
- 4. Đối số dòng lệnh Java. Sử dụng * làm đối số cho phép nhân
- 5. đối số dòng lệnh với leiningen
- 6. Đối số dòng lệnh C++ Eclipse CDT?
- 7. đối số dòng lệnh Tiêm vào psake
- 8. PHP - đối số dòng lệnh trong Windows
- 9. Các đối số QtCreator và Dòng lệnh
- 10. Đối số dòng lệnh tùy chỉnh Emacs
- 11. args.length và dòng lệnh đối số
- 12. Fabfiles Với các đối số dòng lệnh
- 13. Truyền mảng đối số trong dòng lệnh
- 14. Đối số dòng lệnh Python (Windows)
- 15. Python, phân tích đối số dòng lệnh
- 16. PowerShell vượt qua đối số dòng lệnh
- 17. Dòng lệnh Java Java
- 18. Đối số dòng lệnh - đối tượng được yêu cầu: 'objshell.NameSpace (...)'
- 19. Truyền các đối số dòng lệnh tới JAR
- 20. Truyền tham số unicode dòng lệnh tới mã Java
- 21. Đối số dòng lệnh cho sbt là gì?
- 22. Chuyển đối số dòng lệnh tới JAR trong tập lệnh Ant
- 23. MVC trong dòng lệnh java
- 24. Maven: Cách chạy tệp .java từ đối số truyền dòng lệnh
- 25. Chuyển đối số vào chương trình C từ dòng lệnh
- 26. Đối số dòng lệnh của Dịch vụ Windows Delphi
- 27. Đọc đối số dòng lệnh sau '<' trong C
- 28. Sử dụng đối số dòng lệnh trong VBscript
- 29. Đối số dòng lệnh Flash Player để "Tạo Máy chiếu"
- 30. Đối số dòng lệnh Stata ở chế độ hàng loạt
có thể trùng lặp của (http://stackoverflow.com/ Câu hỏi/367706/how-to-parse-command-line-đối số-trong-java) – xenteros