9-3 命令列引數

在 Java 的程式進入點(Entry point),main()方法中必須撰寫 String[] args,這個 String 陣列的作用是讓您在啟動 Java 程式時,可以一併指定引數給 Java 程式來使用,例如若您的 Java 程式為 ArgsDemo,則您可以這麼執行 Java 程式:

java ArgsDemo para1 para2
                            

Java 程式執行後,args[0]將儲存"para1"字串,arg[1]將儲存"para2"字串,啟動程式時您所提供的引數稱之為命令列引數( Command line arguments ) ,程式碼 9-12 中先簡單的示範如何將使用者提供的命令列引數顯示出來。

public class ArgsDemo{
    public static void main(String[] args) {
        System.out.println("顯示命令列引數..");
        for(String arg : args) {
            System.out.println(arg);
        }
    }
}
                            
程式碼 9-12 ArgsDemo.java

執行的結果如下所示:

圖9-14 程式碼 9-12 的執行結果

您可以看到,在提供命令列引數給 Java 程式時,是以空白作為分隔的依據,如果您打算提供一個內含空白的字串作為引數,則可以用雙引號來包括該字串。

命令列引數是以 String 物件儲存於 String 陣列 args 之中,如果您打算將之轉換為基本資料型態,則必須使用表 9-3 中各類別所提供的剖析方法:

方法說明
Byte.parseByte(String s)將 s 剖析為 byte 型態數值
Short.parseShort(String s)將 s 剖析為 short 型態數值
Integer.parseInt(String s)將 s 剖析為 int 型態數值
Long.parseLong(String s)將 s 剖析為 long 型態數值
Float.parseFloat(String s)將 s 剖析為 float 型態數值
Double.parseDouble(String s)s 剖析為 double 型態數值/td>
表 9-3 從 String 剖析為基本型態

舉個例子來說,程式碼 9-13 在執行時可接受兩個數字,程式會將之剖析為 double 型態之數值,並顯示加減乘除後的結果:

public class SimpleCalc{
    public static void main(String[] args){
        if (args.length == 0){
            System.out.println("請提供兩個數字..");
        }
        else{
            double num1 =
                    Double.parseDouble(args[0]);
            double num2 =
                    Double.parseDouble(args[1]);
            System.out.println(num1 + " + " + num2
                    + " = " + (num1 + num2));
            System.out.println(num1 + " - " + num2
                    + " = " + (num1 - num2));
            System.out.println(num1 + " * " + num2
                    + " = " + (num1 * num2));
            System.out.println(num1 + " / " + num2
                    + " = " + (num1 / num2));
        }
    }
}
                            
程式碼 9-13 SimpleCalc.java

程式碼第 3 行中先檢查 args 的長度是否為 0,如果為 0 表示使用者並沒有輸入引數,此時顯示提示訊息要求使用者輸入引數,因為引數是儲存在 args 陣列的元素中,如果長度為 0 又指定 args[0]、args[1] 試圖取得引數,則會發生ArrayIndexOutOfBoundsException 例外,因而檢查 args 陣列的長度是必要的,執行結果如下所示:

圖9-15 程式碼 9-13 的執行結果

如果在使用對應的剖析方法時,無法順利將 String 物件剖析為對應型態的數值時,則會丟出 NumberFormatException 例外。

相關資料

下列參考資料能夠對本章節所討論的話題提供 更詳細的說明:

  • 一個對程式設計者很實用的指引,有數百個完整、可運作的範例:The Java Tutorial