您好,登錄后才能下訂單哦!
小編給大家分享一下在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方法)。
例如,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è)資訊頻道,感謝各位的閱讀!
免責(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)容。