相信在學(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)很清楚了

其實(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)

然后點(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)。謝謝~