溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

在Java中使用命令行參數(shù)的方法

發(fā)布時(shí)間:2020-08-20 14:34:24 來(lái)源:億速云 閱讀:355 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下在Java中使用命令行參數(shù)的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

命令行參數(shù)可以是為應(yīng)用程序指定配置屬性的一種方式,Java也不例外。您可以從終端窗口運(yùn)行Java應(yīng)用程序,而不是單擊操作系統(tǒng)中的應(yīng)用程序圖標(biāo)  。除了應(yīng)用程序名稱(chēng)之外,還可以跟隨許多參數(shù),然后將這些參數(shù)傳遞給應(yīng)用程序的起始點(diǎn)(即,在Java的情況下為main方法)。

在Java中使用命令行參數(shù)的方法

例如,NetBeans具有許多啟動(dòng)參數(shù),當(dāng)從終端窗口運(yùn)行時(shí),可以將這些參數(shù)傳遞給應(yīng)用程序(例如,-jdkhome 指定要使用的JDK的版本,而不是與NetBeans應(yīng)用程序關(guān)聯(lián)的默認(rèn)JDK)。

main方法

讓我們檢查一下main方法 ,看看傳遞給應(yīng)用程序的參數(shù)出現(xiàn)在哪里:

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

命令行參數(shù)可以在名為的String 數(shù)組中找到args。

例如,讓我們考慮一個(gè)被調(diào)用的應(yīng)用程序,CommandLineArgs其唯一的操作是打印傳遞給它的命令行參數(shù):

public class CommandLineArgs {
    public static void main(String[] args) {
        //檢查字符串?dāng)?shù)組是否為空
        if (args.length == 0)
        {
            System.out.println("There were no commandline arguments passed!");
        }
        //對(duì)于字符串?dāng)?shù)組中的每個(gè)字符串
        //打印出字符串。
        for(String argument: args)
        {
            System.out.println(argument);
        }
    }
}

命令行參數(shù)的語(yǔ)法

Java運(yùn)行時(shí)引擎(JRE)期望遵循特定語(yǔ)法傳遞參數(shù),如下所示:

java ProgramName value1 value2

在上面,“java”調(diào)用JRE,后跟您正在調(diào)用的程序的名稱(chēng)。接下來(lái)是程序的任何參數(shù)。程序可以采用的參數(shù)數(shù)量沒(méi)有限制,但順序很重要。JRE按照它們?cè)诿钚兄谐霈F(xiàn)的順序傳遞參數(shù)。例如,請(qǐng)考慮以上代碼段:

public class CommandLineArgs2 {

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

當(dāng)參數(shù)傳遞給Java程序時(shí),args[0]是數(shù)組的第一個(gè)元素(上面的value1), args[1]是第二個(gè)元素(value2),以此類(lèi)推。length()代碼定義了數(shù)組的長(zhǎng)度。

通過(guò)命令行參數(shù)

在NetBeans中,我們可以傳遞命令行參數(shù),而不必構(gòu)建應(yīng)用程序并從終端窗口運(yùn)行它。要指定命令行參數(shù):

右鍵單擊“項(xiàng)目”窗口中的“項(xiàng)目”文件夾。

選擇Properties選項(xiàng)以打開(kāi)項(xiàng)目屬性窗口。

在右邊的Categories列表中,選擇Run。

在出現(xiàn)的Arguments文本框中,指定要傳遞給應(yīng)用程序的命令行參數(shù)。例如,如果我們?cè)贏rguments文本框中輸入Apple Banana Carrot并運(yùn)行上面列出的CommandLineArgs程序,我們將得到輸出:

Apple
Banana
Carrot

解析命令行參數(shù)

通常,會(huì)傳遞一個(gè)命令行參數(shù),其中包含一些關(guān)于如何處理傳遞的值的信息。通知應(yīng)用程序參數(shù)的參數(shù)通常在其名稱(chēng)前有一兩個(gè)連字符。例如,用于指定JDK路徑的啟動(dòng)參數(shù)的NetBeans示例是-jdkhome。

這意味著您需要解析命令行參數(shù),以確定如何處理這些值。有幾個(gè)用于解析命令行參數(shù)的Java命令行框架?;蛘撸绻枰獋鬟f的參數(shù)不多,也可以編寫(xiě)一個(gè)簡(jiǎn)單的命令行解析器:

public class CommandLineArgs {
//命令行參數(shù):
// -打印輸出輸出它后面的所有參數(shù)
//addnumbers在后面添加所有的數(shù)字參數(shù)
public static void main(String[] args) {
//檢查字符串?dāng)?shù)組是否為空
if (args.length == 0)
{
System.out.println("There were no commandline arguments passed!");
}
else
{
  // 設(shè)置一些初始變量
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);
}
}
}
}

上面的代碼要么打印參數(shù),要么將它們相加(如果它們是整數(shù))。例如,這個(gè)命令行參數(shù)將添加數(shù)字:

java CommandLineArgs -addnumbers 11 22 33 44

看完了這篇文章,相信你對(duì)在Java中使用命令行參數(shù)的方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI