首頁  >  文章  >  Java  >  如何在Java中使用命令列參數

如何在Java中使用命令列參數

藏色散人
藏色散人原創
2019-01-19 10:46:1517416瀏覽

在Java中使用命令列參數的方法:先從終端機視窗執行Java應用程式;然後將參數傳遞給應用程式的起始點即可。

如何在Java中使用命令列參數

本文操作環境:Windows7系統、Dell G3電腦、Java8.0版。

命令列參數可以是為應用程式指定配置屬性的一種方式,Java也不例外。您可以從終端機視窗執行Java應用程序,而不是點擊作業系統中的應用程式圖示  。除了應用程式名稱之外,還可以跟隨許多參數,然後將這些參數傳遞給應用程式的起始點(即,在Java的情況下為main方法)。

例如,NetBeans具有許多啟動參數,當從終端視窗運行時,可以將這些參數傳遞給應用程式(例如,-jdkhome 指定要使用的JDK的版本,而不是與NetBeans應用程式關聯的預設JDK)。

main方法

讓我們檢查main方法,看看傳遞給應用程式的參數出現在哪裡:

public static void main(String[] args)
{
...do something here
}

命令列參數可以在名為的String 數組中找到args。

例如,讓我們考慮一個被呼叫的應用程序,CommandLineArgs其唯一的操作是列印傳遞給它的命令列參數:

public class CommandLineArgs {
    public static void main(String[] args) {
        //检查字符串数组是否为空
        if (args.length == 0)
        {
            System.out.println("There were no commandline arguments passed!");
        }
        //对于字符串数组中的每个字符串
        //打印出字符串。
        for(String argument: args)
        {
            System.out.println(argument);
        }
    }
}

命令列參數的語法

Java執行時間引擎(JRE)期望遵循特定語法傳遞參數,如下所示:

java ProgramName value1 value2

在上面,「java」呼叫JRE,後面跟著您正在呼叫的程式的名稱。接下來是程式的任何參數。程式可以採用的參數數量沒有限制,但順序很重要。 JRE會依照它們在命令列中出現的順序傳遞參數。例如,請考慮上述程式碼段:

public class CommandLineArgs2 {

    public static void main(String[] args) {
        if (args.length == 0)
        {
            System.out.println("There were no commandline arguments passed!");
        }

當參數傳遞給Java程式時,args[0]是陣列的第一個元素(上面的value1), args[1]是第二個元素( value2),以此類推。 length()代碼定義了陣列的長度。

透過命令列參數

在NetBeans中,我們可以傳遞命令列參數,而不必建立應用程式並從終端機視窗運行它。若要指定命令列參數:

右鍵點選「專案」視窗中的「專案」資料夾。

選擇Properties選項以開啟專案屬性視窗。

在右邊的Categories清單中,選擇Run。

在出現的Arguments文字方塊中,指定要傳遞給應用程式的命令列參數。例如,如果我們在Arguments文字方塊中輸入Apple Banana Carrot並運行上面列出的CommandLineArgs程序,我們將得到輸出:

Apple
Banana
Carrot

解析命令列參數

#通常,會傳遞一個命令列參數,其中包含一些關於如何處理傳遞的值的資訊。通知應用程式參數的參數通常在其名稱前有一兩個連字符。例如,用於指定JDK路徑的啟動參數的NetBeans範例是-jdkhome。

這表示您需要解析命令列參數,以確定如何處理這些值。有幾個用於解析命令列參數的Java命令列框架。或者,如果需要傳遞的參數不多,也可以編寫一個簡單的命令列解析器:

public class CommandLineArgs {
//命令行参数:
// -打印输出输出它后面的所有参数
//addnumbers在后面添加所有的数字参数
public static void main(String[] args) {
//检查字符串数组是否为空
if (args.length == 0)
{
System.out.println("There were no commandline arguments passed!");
}
else
{
  // 设置一些初始变量
boolean printout = false;
boolean addNumbers = false;
boolean validNumbers = true;
int total = 0;
for(String argument: args)
{
if(argument.equals("-addnumbers"))
{
printout = false;
addNumbers = true;
}
else if (argument.equals("-printout"))
{
printout = true;
addNumbers = false;
}
else if (addNumbers)
{
try {
total = total + Integer.parseInt(argument);
} catch (NumberFormatException e) {
System.out.println("arguments passed with -addnumbers " + "must be integers!");
validNumbers = false;
addNumbers = false;
}
}
else if (printout)
{
System.out.println(argument);
}
}
if (validNumbers)
{
System.out.println("The total of the number arguments is: " + total);
}
}
}
}

上面的程式碼要么打印參數,要么將它們相加(如果它們是整數)。例如,這個命令列參數將會加入數字:

java CommandLineArgs -addnumbers 11 22 33 44

以上是如何在Java中使用命令列參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn