2016-11-18 71 views
2

我將如何實現BufferedReader讀取具有多個字段的文件?我知道br逐行讀取,但是文件的格式讓我很難理解,因爲每一行的長度都不相同。這是一個文本格式的例子。如何讓bufferedReader在每次發生時解釋4個變量行?那麼之後進行的兩條可變線?使用Bufferedreader讀取多字段文本文件

var0// number of test cases 

var1 var2 var3 var4 

num1 num2 

num3 num4 

... ... 

... ... 

var6 var7 var8 var9 

... ... 

... ... 

... 

... 

這裏是我的基本的BufferedReader的代碼讀取文件

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.Scanner; 

public class FileHandling { 

    public static void main(String[ ] args) { 

     Scanner scanner = new Scanner(System.in); 
     BufferedReader br = null; 
     String line; 

     //System.out.println("New.txt"); 

     try{ 
      br = new BufferedReader(new FileReader("Part1.txt")); 
     } catch (FileNotFoundException fileex) { 
      System.out.println(fileex.getMessage() + "This File Was Not Found"); 
      System.exit(0); 
     } 

     //Read the lines 

     try { 
      while((line = br.readLine()) != null){ 
      System.out.println(line); 
    } 
     } catch (IOException ioex) { 
      System.out.println(ioex.getMessage() + "Error Reading File"); 
     }finally { 
      System.exit(0); 
     } 

} 

有幾件事情要注意。我瞭解這個網站及其用途。我通過本網站上的其他類似問題徹底研究了數小時。我已經嘗試了可汗學院,YouTube,我能想到的一切來解決我的問題。我不想找人爲我做我的工作。我只是一個失落的CS學生,正在尋找正確方向的提示。我的Java技能很弱,所以也許我只是沒有以別人能解釋得更好的方式來解決問題。我很感激你們都可以給我的任何建議。謝謝。

+3

您正在尋找'String.split'。在空間分割線。 –

+2

或者使用'java.util.Scanner'。 – EJP

+0

從@AndyTurner的說法來看,你想使用'String.split('')',這將把每一行和一個空格分開,然後你可以將它存儲在一個數組中。這裏有一個例子,關於如何使用它: https://stackoverflow.com/questions/3481828/how-to-split-a-string-in-java – user123

回答

0

對這些註釋進一步擴展,這段代碼會將每行分割爲一個空格字符,並將結果存儲在一個數組中。從那裏,你可以操縱數據,例如,如果你輸入的是:

John Goodman 
Kate Beckinsale 
George Foreman 

你可以設置一個變量String firstName = array[0];String lastName = array[1];

這裏,你將需要從你的改變。例如,代碼

try { 
    while((line = br.readLine()) != null){ 
    String[] splitLine = line.split(' '); 
    for(String str : splitLine) { 
     // Do something with each string 
     System.out.println(str); 
    } 
}