相信在學習這本書的同學一定被此書中多次出現的args[0]問題所困擾
以及作者動輒就是
%java BinarySearch tinyW.txt < tinyT.txt
50
99
13
這種命令行操作,讓我這種用eclipse的小白,所以寫下來方便學習的同學參考,歡迎指出我理解中的錯誤。
先放上一張作者官網上的介紹,實際上已經很清楚了
其實就是想針對書上BinarySearch測試類說一下如何將作者的命令行操作轉到eclipse上用
先把書本上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實現
然后點擊run即可
至于作者的StdIn庫,我目前在eclipse下只能手動輸入數據
還沒有破解出如何利用作者的StdIn庫標準輸入文件,看書上的是在命令行下運行,不過不太懂這個重定向后向StdIn中輸入文件。
歡迎知道的同學指點。謝謝~