2016-12-02 17 views
-5

我有一個多行文件。我的Java程序必須從它讀取每三行並將它們格式化爲一行並將其寫入另一個文件。我如何告訴忽略文件中的一些行?
例如: 文件程序讀取來自:用於讀寫文本文件的Java程序

第一,第二,第三
布拉斯的Blad,Blaff,
拖把,熔點,燮

它必須打開這三行:

首先,晚飯,Blaff

它是否正確,但我如何告訴程序忽略某些特定單詞的行,例如,如果它有特定的單詞,如其中一行中的「sub」?
代碼的例子如下:

public static void main(String[] args) throws Exception { 

    String text = ""; 
    String changedText = ""; 
    String first = "", second = "", third = ""; 
    int outerCounter = 0; 
    int innerCounter = 0; 
    int arturCounter = 0; 
    String temp = ""; 

    //first, we read data from file 
    java.io.File file = new java.io.File("test.txt"); 
    Scanner input = new Scanner(file); 
    input.useDelimiter("\r"); 

    while(input.hasNextLine()) { 
     text = input.next(); 

     outerCounter += 1; 
     innerCounter = 0; 
     for (String string : text.split(",")) { 

      innerCounter += 1; 
      if(outerCounter == 1) { 
       second = string; 
       break; 
      } 
      else if(outerCounter == 2 && innerCounter == 3) { 

       third = string; 
     } 
      else if(outerCounter == 3 && innerCounter == 3) { 
       first = string; 
       outerCounter = 0; 
       second = second.replace("\n", "").replace("\r", ""); //very important part, solves the problem with new line! 
       changedText += second + "," + first + "," + third + "\r" + "\n"; 
      } 
     } 


    } 

    //second, we write obtained data to another file 
    //PrintWriter creates the file 
    java.io.PrintWriter output = new java.io.PrintWriter("testOutput.txt"); 

    //write formatted output to the file 
    output.println(changedText); 

    //close the file 
    output.close(); 
    System.out.println(changedText); 

    } 
} 

預先感謝您的幫助。

+3

你的問題很混亂。你能澄清一下你的輸入是什麼以及它應該如何輸出?你想要做什麼轉變? – ControlAltDel

+0

'if(text.contains(「sub」)){continue; }'順便說一句,在你的情況下,你應該使用'input.nextLine()'而不是'input.next()'。 –

+0

那麼,ControlAltDel,你有什麼困惑?@Jaroslaw似乎沒有這個問題。謝謝你的反饋Jaroslaw。我不明白爲什麼我的問題得到負面的利率,我只是一個初學者,像禿鷲一樣的stackoverflow社區攻擊我的無辜的嘗試,以獲得幫助 – Trex87

回答

-1

我將遵循範式:

  • 初始化一個數組POS指針。說(p)= 0.
  • 初始化一個數組。說(arr)= []
  • 創建一個函數來讀取下一行,命名它(a)
  • 進入一個循環。
  • 調用a()來獲得下一行,說(l)新行。
  • 檢查EOF
  • 檢查單元(l)如果發現呼叫「無效」的話繼續循環,以獲得下一行
  • 一個添加行(ARR)[P]和增量頁。
  • 如果p == 3寫入文件(arr)[0] +(arr)[2] +(arr)[1]。重置(p)= 0.
  • 否則繼續;