2012-08-01 85 views
1

如何選擇我的程序中使用命令行參數運行的方法?例如,如果我希望我的程序處理名爲Moon.jpg的圖像,我如何使其工作,以便命令行中的-S Moon.jpg可以調用Scale方法?或者-HI Moon.jpg會水平翻轉圖像並翻轉它?我有一些編寫的方法,當我正常運行程序時它們會工作。從命令行參數控制程序

+0

你想調用Java內的程序就像運行它們在命令行想要檢索輸出? – kamaci 2012-08-01 18:35:05

回答

3

http://commons.apache.org/cli/

這應該有所幫助。以下是如何使用它: http://commons.apache.org/cli/usage.html

+1

該庫如何根據命令輸入映射方法? – kosa 2012-08-01 18:34:20

+1

http://commons.apache.org/cli/usage.html – mohaps 2012-08-01 18:35:20

+2

這是一個很差的答案。雖然您鏈接的庫可能會有所幫助,但用戶期望如何使用它並不清楚。此外,本網站上的最佳做法是爲答案提供更多「僅僅一個鏈接」。 – 2012-08-01 18:37:04

0

您可能需要針對每個用途編寫不同的方法,並根據命令輸入設置if/else條件。

3

你可以用這樣的功能解析參數:

private void parseArguments(String[] args) 
    { 
    int i = 0; 
    String curArg; 

    while (i < args.length && args[i].startsWith("-")) 
    { 
     curArg = args[i++]; 

     if ("-S".compareTo(curArg) == 0) 
     { 
     if (i < args.length) 
     { 
      String image = args[i++]; 
      processImage() 
     } 
     else 
     { 
      // ERROR 
     } 
     } 
    } 
    } 

你的主要方法應該始終有字串[] args包含參數拆分的空格字符。還有很多庫可以用來解析命令行參數。此方法與Apaches CLI庫使用的方法非常相似(當然,該庫附帶更多內容,但解析器使用此邏輯)。

+0

謝謝Chris911。完全工作! ;-) – 2012-08-02 22:55:50

+0

請不要猶豫,將答案作爲您接受的答案,然後;) – Chris911 2012-08-03 13:39:28

+0

@ KimberleeGraham-Knight然後,您應該單擊此答案旁邊的複選標記。 – 2013-06-04 17:33:06

0

爲什麼不讀傳遞的參數和讀取隨後的值進行所需的東西 即

的Java yourprogram -A1東西-A2 somethingelse

,並在你的程序

public static void main(String[] args){ 
for(int i=0;i<args.length;i++){ 
    switch(args[i]){//you can use if-else to deal with string... 
    case "-a1":read args[i+1] to get value to do somethng 
    case "-a2": read args[i+1] to get value to do something else 
} 
}