《算法》第四版之main函數(shù)傳參問(wèn)題

相信在學(xué)習(xí)這本書(shū)的同學(xué)一定被此書(shū)中多次出現(xiàn)的args[0]問(wèn)題所困擾
以及作者動(dòng)輒就是

%java BinarySearch tinyW.txt < tinyT.txt
50
99
13

這種命令行操作,讓我這種用eclipse的小白,所以寫(xiě)下來(lái)方便學(xué)習(xí)的同學(xué)參考,歡迎指出我理解中的錯(cuò)誤。

先放上一張作者官網(wǎng)上的介紹,實(shí)際上已經(jīng)很清楚了


java程序及其命令行的調(diào)用

其實(shí)就是想針對(duì)書(shū)上BinarySearch測(cè)試類(lèi)說(shuō)一下如何將作者的命令行操作轉(zhuǎn)到eclipse上用

對(duì)main函數(shù)傳參問(wèn)題這里有一個(gè)很好的介紹

先把書(shū)本上BinarySearch測(cè)試類(lèi)pull上

public static void main(String[] args) {
        int [] whitelist = In.readInts(args[0]);
        Arrays.sort(whitelist); 
        while(!StdIn.isEmpty())
        {
            int key = StdIn.readInt();
            if(rank(key,whitelist)<0)
                StdOut.println(key);
        }   
    }

先談 public static void main(String[] args)
這個(gè)是繼承Unix(C)的命令

通常情況下,C程序的main函數(shù)為

普通情況下這么寫(xiě)
int main(int argc char **argv)
有些情況下這么寫(xiě)
int main(int argc, char *argv[], char **env)

argc 為參數(shù)數(shù)目
argv為字符串?dāng)?shù)組。

char **argv = char argv[] = char argv[][]
你可以認(rèn)為在main函數(shù)方面,java只是一層包裝,即java的包裝只是取消了argc,把a(bǔ)rgv從二維的字符矩陣換成了字符串?dāng)?shù)組。

java的args = C的**argv,
C的argc=java的java的args.count()(或者args.length())

在java中,main()方法是java應(yīng)用程序的入口方法。java虛擬機(jī)通過(guò)main方法找到需要啟動(dòng)的運(yùn)行程序,并且檢查main函數(shù)所在類(lèi)是否被java虛擬機(jī)裝載。如果沒(méi)有裝載,那么就裝載該類(lèi),并且裝載所有相關(guān)的其他類(lèi)。因此程序在運(yùn)行的時(shí)候,第一個(gè)執(zhí)行的方法就是main()方法。

String[] args是main函數(shù)的形式參數(shù),可以用來(lái)獲取命令行用戶輸入進(jìn)去的參數(shù)。即當(dāng)你在Java命令行后面帶上參數(shù),Java虛擬機(jī)就直接把它們存放到了main方法中的參數(shù)String數(shù)組里了。因?yàn)閰?shù)可以為多個(gè),所以要用數(shù)組來(lái)存。

我們?cè)赿os中執(zhí)行Java程序的時(shí)候使用“java 文件名 args參數(shù)”。args這個(gè)數(shù)組可以接收到這些參數(shù)。

那在eclipse中呢可以通過(guò)右擊->run as -> run configurations->Arguments實(shí)現(xiàn)


ecplice下命令行傳參.png

然后點(diǎn)擊run即可

至于作者的StdIn庫(kù),我目前在eclipse下只能手動(dòng)輸入數(shù)據(jù)
還沒(méi)有破解出如何利用作者的StdIn庫(kù)標(biāo)準(zhǔn)輸入文件,看書(shū)上的是在命令行下運(yùn)行,不過(guò)不太懂這個(gè)重定向后向StdIn中輸入文件。

歡迎知道的同學(xué)指點(diǎn)。謝謝~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • //Clojure入門(mén)教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語(yǔ)閱讀 4,044評(píng)論 0 7
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,265評(píng)論 0 62
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,697評(píng)論 18 399
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,563評(píng)論 19 139
  • 9/16,中秋節(jié)的第二天,都說(shuō)十五的月亮十六圓,可是上海卻連續(xù)下了三天的雨,連空氣都透露著潮濕,整個(gè)城市有點(diǎn)發(fā)霉的...
    隱居人群後閱讀 761評(píng)論 2 2

友情鏈接更多精彩內(nèi)容