java wordcount程序_[java]wordcount程序
詞數(shù)統(tǒng)計(jì)系統(tǒng)。
作業(yè)解析:這次作業(yè)的內(nèi)容是從本地讀取一個(gè)程序代碼,計(jì)算出這個(gè)程序中的行數(shù),單詞數(shù),也可進(jìn)行拓展。
實(shí)現(xiàn)語(yǔ)言:java
編程思路:
程序是由各種單詞和符號(hào)組成的,單詞包括關(guān)鍵字,標(biāo)識(shí)符這些單詞組成的,符號(hào)包括各種運(yùn)算符或者是分隔符...在這里統(tǒng)分為字符和單詞。
在java語(yǔ)言中,可以實(shí)例化一個(gè)FileReader內(nèi)讀取程序,再使用BufferReader從字符輸入流中讀取文本并將字符存入緩沖區(qū)以便能提供字符、數(shù)組和線段的高效讀取,BufferReader類的readline()函數(shù)能夠讀取一個(gè)文本行,返回一個(gè)字符串。這時(shí)可以使用String類的split()函數(shù),split()函數(shù)能夠分割字符串,參數(shù)為正則表達(dá)式,返回值為一個(gè)字符串?dāng)?shù)組。寫程序中遇到的困難基本都出在這里,下邊會(huì)細(xì)說。之后便可以針對(duì)分割結(jié)果進(jìn)行計(jì)數(shù),運(yùn)行結(jié)果如下圖,圖1是運(yùn)行結(jié)果,圖2 是測(cè)試的程序。
調(diào)試過程:
這測(cè)試的過程中發(fā)現(xiàn)統(tǒng)計(jì)的行數(shù)總會(huì)莫名其妙的多很多,經(jīng)過一番查找,發(fā)現(xiàn)是那些以字符結(jié)尾,然后換行的句子會(huì)出現(xiàn)這個(gè)問題,一番查找之后了解到split()函數(shù)在同時(shí)遇到多個(gè)需要剔除的字符時(shí),會(huì)在返回結(jié)果里創(chuàng)建一個(gè)“”的元素,加一個(gè)判斷結(jié)構(gòu)便解決了問題。
在書寫的正則表達(dá)式里含有.|(){}會(huì)報(bào)錯(cuò),查看了之后有兩個(gè)原因:1°.|為轉(zhuǎn)義字符,前邊需要添加\\。2°編譯器會(huì)把表達(dá)式內(nèi)的(){}識(shí)別為運(yùn)算符(){}導(dǎo)致語(yǔ)法錯(cuò)誤。
圖1
圖2
經(jīng)驗(yàn)總結(jié):寫這個(gè)程序?qū)W習(xí)另一個(gè)很重要的知識(shí)--正則表達(dá)式,下面簡(jiǎn)單概括一下正則表達(dá)式。
定義與用途:正則表達(dá)式使用單個(gè)字符串來描述、匹配一系列符合某個(gè)句法規(guī)則的字符串,在編寫處理字符串的程序或網(wǎng)頁(yè)時(shí),經(jīng)常會(huì)有查找符合某些復(fù)雜規(guī)則的字符串的需要。正則表達(dá)式就是用于描述這些規(guī)則的工具。換句話說,正則表達(dá)式就是記錄文本規(guī)則的代碼。
由此可知,我們可以使用正則表達(dá)式對(duì)給定字符串進(jìn)行匹配,查看它是否滿足我們定下的正則表達(dá)規(guī)則。與此相似,我們也可以通過正則表達(dá)式從字符串中獲取我們需要的部分。
語(yǔ)法:正則表達(dá)式是由一些普通字符和一些元字符組成的。其中普通字符包括大小寫的字母和數(shù)字,而元字符則具有特殊的含義。
一個(gè)正則表達(dá)式通常被稱為一個(gè)模式(pattern),為用來描述或者匹配一系列符合某個(gè)句法規(guī)則的字符串。例如:Handel、H?ndel和Haendel這三個(gè)字符串,都可以由“H(a|?|ae)ndel”這個(gè)模式來描述。大部分正則表達(dá)式的形式都有如下的結(jié)構(gòu):
選擇|豎直分隔符代表選擇。例如“gray|grey”可以匹配grey或gray。數(shù)量限定某個(gè)字符后的數(shù)量限定符用來限定前面這個(gè)字符允許出現(xiàn)的個(gè)數(shù)。最常見的數(shù)量限定符包括“+”、“?”和“*”(不加數(shù)量限定則代表出現(xiàn)一次且僅出現(xiàn)一次):+加號(hào)代表前面的字符必須至少出現(xiàn)一次。(1次、或多次)。例如,“goo+gle”可以匹配google、gooogle、goooogle等;?問號(hào)代表前面的字符最多只可以出現(xiàn)一次。(0次、或1次)。例如,“colou?r”可以匹配color或者colour;*星號(hào)代表前面的字符可以不出現(xiàn),也可以出現(xiàn)一次或者多次。(0次、或1次、或多次)。例如,“0*42”可以匹配42、042、0042、00042等。匹配圓括號(hào)可以用來定義操作符的范圍和優(yōu)先度。例如,“gr(a|e)y”等價(jià)于“gray|grey”,“(grand)?father”匹配father和grandfather。
上述這些構(gòu)造子都可以自由組合,因此,“H(ae?|?)ndel”和“H(a|ae|?)ndel”是相同的。
精確的語(yǔ)法可能因不同的工具或程序而異。
維基百科,詞條:正則表達(dá)式
因?yàn)檫€沒有更深入的使用,就先總結(jié)到這里,毫無疑問,正則表達(dá)式是一個(gè)很強(qiáng)大的工具。
總結(jié)
以上是生活随笔為你收集整理的java wordcount程序_[java]wordcount程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《求生之路》最早的设计原型或遭泄漏:一张
- 下一篇: java servlet深入理解_jav