2016-02-04 59 views
1

我正在使用包含數據行的bufferedReader讀取txt文件。然後,我試圖根據多個條件過濾出文本文件的行。在這種情況下,我想跳過開頭的行AA和線開始DD的文本文件看起來像使用Contains方法篩選輸入的多個不同行

AA Data1 
BB Data2 
CC Data3 
DD Data4 
AA Data5 
CC Data6 

到目前爲止我的代碼承認,我想跳過這兩個,但是,對於該行多數民衆贊成從DD到AA,它會跳過DD行,但是不知道我也想跳過下面的AA行。所以,我的程序的輸出如下:

BB Data2 
CC Data3 
AA Data5 
CC Data6 

它擺脫根據需要第一AA的,但留下第二AA,因爲它被認爲是在收到線擺脫DD的。

下面是我當前的代碼:

 public static void main(String[] args){ 

    try { 
     BufferedReader br = new BufferedReader(new FileReader("files/txtfile")); 
     String line = null; 
     String previousLine = null; 

     for (line=br.readLine(); line != null;){ 
      if (previousLine != null) { 
       if (line.contains("AA")||line.contains("DD")){ 
        previousLine = br.readLine(); 
       } 
       line= br.readLine(); 
      } 
      System.out.println(previousLine); 
      previousLine = line; 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
}  

任何意見,將不勝感激!

回答

1

試試這個

import java.io.*; 
public class tehMain { 
    public static void main(String[] args) { 
     try(BufferedReader br = new BufferedReader(new FileReader("files/txtfile"))) { 
      for (String line=br.readLine(); line != null; line=br.readLine()) { 
       if (line.contains("AA")||line.contains("DD")) 
        continue; 
       System.out.println(line); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

這一個工作!謝謝。 – Tepinvic

+0

@Tepinvic不客氣! –

1

這是不是你想要做什麼?

for (line=br.readLine(); line != null; line=br.readLine()) { 
    if (!((line.contains("AA")||line.contains("DD"))) { 
     System.out.println(line) 
    } 
} 
+0

嗯,試圖這樣做沒有輸出,當我停止該過程時,它給出了退出代碼130 – Tepinvic

2

操作方法......

while((line = br.readLine()) != null) { 
    if(!(line.contains("AA") || line.contains("DD"))) { 
    System.out.println(line); 
    } 
} 
+0

小心解釋你的答案? –

+0

這一個仍然只捕獲要過濾的第一行,但仍然返回第二行。在我描述的文本文件中,它過濾掉了「DD Data 4」,但在它下面返回了「AA Data5」行。 – Tepinvic

+0

while將繼續讀取每一行並將其設置爲'line'直到它變爲null。每次讀取一行時,它都會檢查它是否不包含AA或DD。如果它不包含,則打印該行。編輯它來解決一個始終如此的問題。 – Talon

相關問題