2014-02-18 34 views
0

我正在嘗試創建一個小程序,該程序允許您在文本文件中搜索單詞,然後該程序應打印出文本所在的整行。找到一個單詞並複製它在Java中的行

例子:

test.txt 
    don't mind this text 
    don't mind this either 

,然後當你讓單詞「文本」的節目搜索,它應該打印出「不要介意這個文本」。

這樣做的最好方法是什麼?

這就是我的;

public boolean findFileInCache(){ 
     try (BufferedReader br = new BufferedReader(new FileReader("direct.txt"))) 
     { 
      while ((name = br.readLine()) != null) 
      { 
       Process p = Runtime.getRuntime().exec(name); 
      } 
     } 
     catch (IOException e1) { } 

     return true; 
    } 
+0

實際上,嘗試它通常是編寫程序的最佳途徑。 – christopher

+0

克里斯托弗,我知道,我其實也在嘗試。自從昨天開始嘗試後,我似乎無法獲得任何地方 – user3231227

+0

到目前爲止你有什麼?你做了什麼 ?你有特定的問題嗎?通常情況下,你應該有一個特定的問題,我們可以回答。 –

回答

3

使用BufferedReader使用BufferedReader.readLine()方法逐行讀取文件中的行。

對於每一線,檢查字是使用正則表達式它,或通過分割線成String[](使用String.split()),和迭代所得的數組中的條目,以檢查其中是否是所希望的字。如果所需單詞在那裏 - 打印整行。

如果您選擇了第二個建議,不要忘記使用equals()而不是使用==

+1

優秀。提供所有信息並讓它們拼湊在一起。 +1 – christopher

+0

確實,我更喜歡它,因爲我可以把它們拼在一起! +1並被接受爲答案。謝謝! – user3231227

2

有幾件事情你需要做的檢查兩個字符串平等:

  1. 通過從一開始就閱讀Java入門書或課程筆記來學習基礎知識,從一開始就確保您理解每一步。
  2. 閱讀可能類的Javadocs,找到可用於該任務的方法。

您已經找到了解決的兩個核心部分:

  • 你得到使用BufferedReader.readLine()
  • 你正在做的while循環在時間線,讓你處理一行在一個時間

現在,你需要弄清楚如何處理每一行。雖然您沒有包含該類型,但name是一個字符串。如果你的代碼編譯沒有String,則意味着您聲明name作爲全球

while ((String name = br.readLine()) != null) { 
     ... do something with `line` 
} 

:這將是更好的。不要那樣做,直到你知道你在做什麼。

將事情分解成方法是很好的;因此,讓「做line東西」現在使用的方法:

while ((String name = br.readLine()) != null) { 
     if(matches(line,"text")) { 
      System.out.println(line); 
     } 
} 

現在,你需要寫matches()

private boolean matches(String line, String word) { 
     boolean result = // work out whether it's a match 
     return result; 
} 

那麼,你是怎麼寫的matches()膽量?

那麼,首先看看String中可用的方法。它有像和split()的方法。其中一些方法返回其他類型,如數組。你的教材和參考資料告訴你如何看陣列。答案就在那裏。

相關問題