我正在解決一個問題,即需要程序允許用戶使用-d命令行選項設置參數。 java是否提供了使用-d選項傳遞參數的機制?我找不到任何,所以我正在解釋,就好像命令行選項值是-d,這意味着用戶想要輸入下一個參數。在java中傳遞-d選項
if (args[0].equals("-d"))
{
parameter = args[0];
}
這是正確的方法來檢查?有沒有更好的方法來檢查用戶是否輸入了-d
選項? java是否提供了其他一些機制?
我正在解決一個問題,即需要程序允許用戶使用-d命令行選項設置參數。 java是否提供了使用-d選項傳遞參數的機制?我找不到任何,所以我正在解釋,就好像命令行選項值是-d,這意味着用戶想要輸入下一個參數。在java中傳遞-d選項
if (args[0].equals("-d"))
{
parameter = args[0];
}
這是正確的方法來檢查?有沒有更好的方法來檢查用戶是否輸入了-d
選項? java是否提供了其他一些機制?
如果有人使用./yourapp something else -d
運行程序該怎麼辦? 現在參數-d存在,但不在位置0
所以,我的建議是循環所有的參數,並檢查你需要什麼。
int i;
boolean dParam = false;
for (i = 0; i < args.length; i++) {
if (args[i].equals("-d")) {
dParam = true;
}
}
如果你想在-d後,用戶輸入的東西,像一個文件名,那麼我會推薦這樣做:
int i;
boolean dParam = false;
String dParamValue;
for (i = 0; i < args.length; i++) {
if (args[i].equals("-d")) {
dParam = true;
dParamValue = args[++i];
}
}
這開始看起來很像重新發明輪子。你最好的方式是最多... –
這不是重新發明車輪。這是OP的初始代碼的更新版本。 – Ibrahim
傳遞給正在運行的程序的所有參數,會在應用程序通過量參數字串[] args的主要方法..
然後,您可以檢查字典是有要求的,由只檢查如果參數數組包含鍵..
public static void main(String[] args) {
System.out.println("is dictionary there?: " + Arrays.asList(args).contains("d"));
if (Arrays.asList(args).contains("d")) {
prepateDictionary();
}else {
prepareSomethingElse();
}
}
我認爲需求意味着-D
(首都之一),而不是-d
。這些選項用於將附加參數傳遞給java。例如,-Dmy.option=value
。在這種情況下,您可以通過System
類訪問此屬性:
String myOption = System.getProperty("my.option");
使用命令行參數解析器。 [JCommander](http://jcommander.org/)(無隸屬關係)是我的首選 - 還有其他人。 –
然後'parameter =「-d」'或者'null' - 是你想要的嗎?以Apache Commons CLI爲例,和http://stackoverflow.com/questions/10745811/how-to-use-terminal-arguments-with-values-in-java –