《算法》第四版之main函數傳參問題

相信在學習這本書的同學一定被此書中多次出現的args[0]問題所困擾
以及作者動輒就是

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

這種命令行操作,讓我這種用eclipse的小白,所以寫下來方便學習的同學參考,歡迎指出我理解中的錯誤。

先放上一張作者官網上的介紹,實際上已經很清楚了


java程序及其命令行的調用

其實就是想針對書上BinarySearch測試類說一下如何將作者的命令行操作轉到eclipse上用

對main函數傳參問題這里有一個很好的介紹

先把書本上BinarySearch測試類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)
這個是繼承Unix(C)的命令

通常情況下,C程序的main函數為

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

argc 為參數數目
argv為字符串數組。

char **argv = char argv[] = char argv[][]
你可以認為在main函數方面,java只是一層包裝,即java的包裝只是取消了argc,把argv從二維的字符矩陣換成了字符串數組。

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

在java中,main()方法是java應用程序的入口方法。java虛擬機通過main方法找到需要啟動的運行程序,并且檢查main函數所在類是否被java虛擬機裝載。如果沒有裝載,那么就裝載該類,并且裝載所有相關的其他類。因此程序在運行的時候,第一個執行的方法就是main()方法。

String[] args是main函數的形式參數,可以用來獲取命令行用戶輸入進去的參數。即當你在Java命令行后面帶上參數,Java虛擬機就直接把它們存放到了main方法中的參數String數組里了。因為參數可以為多個,所以要用數組來存。

我們在dos中執行Java程序的時候使用“java 文件名 args參數”。args這個數組可以接收到這些參數。

那在eclipse中呢可以通過右擊->run as -> run configurations->Arguments實現


ecplice下命令行傳參.png

然后點擊run即可

至于作者的StdIn庫,我目前在eclipse下只能手動輸入數據
還沒有破解出如何利用作者的StdIn庫標準輸入文件,看書上的是在命令行下運行,不過不太懂這個重定向后向StdIn中輸入文件。

歡迎知道的同學指點。謝謝~

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容