2017-10-11 11 views
-3

我寫的是需要找到這個詞的程序「的」在給定文件讀取文件中的字符。 3在同一時間....在Java中

while ((c=reader.read())>=0) 
    { 
     if (c==116 && c+1==104 && c+2==101) 
     return true; 
    } 

這顯然是錯誤的,雖然它比較正確的價值c靠在116(的「t」的字符代碼),但是 然後,c+1顯然不是在輸入下一個字符, 所以它不是針對比較104正確的事(「H」的字符代碼)。 同上c+2和101(字符碼「e」)。

知道怎樣才能找字「的」文件中讀取?

請注意,我寧願不使用數組或花式庫。我怎樣才能做到這一點?

+0

那麼既然你用'讀者'似乎標準庫是好的,所以使用'掃描儀'。 – daniu

回答

0

閱讀3一次不會那麼容易。考慮例如輸入「國歌」。前3個字符將是「螞蟻」,第二個「下襬」。輸入包含「the」,但它分成兩個3字符序列。

這將是更容易的字符,該算法以下讀取字符, 例如:

  • 讀逐個字符與reader.read()到文件結束,或者直到你找到一個t
  • 閱讀1以上性格和檢查:
    • 它是文件的結束? - >return false
    • 難道不是h? - >繼續尋求對t
    • 這是一個h。然後再讀1個字符並檢查:
    • 它是否是文件的結尾? - >return false
    • 是不是e? - >return true
  • 如果到達文件的末尾,return false

下面是做這件事:

boolean containsThe(Reader reader) throws IOException { 
    int c1; 
    while ((c1 = reader.read()) != -1) { 
     if (c1 != 't') continue; 

     int c2 = reader.read(); 
     if (c2 == -1) return false; 
     if (c2 != 'h') continue; 

     int c3 = reader.read(); 
     if (c3 == -1) return false; 
     if (c3 == 'e') return true; 
    } 
    return false; 
    } 
+0

這樣做了,我在詞前後添加了'',以確保我實際上是指單詞,而不僅僅是一些隨機字符 –

相關問題