2011-04-28 77 views
4

我在這個格式的輸入文本文件:爪哇 - 解析文本文件

<target1> : <dep1> <dep2> ... 
<target2> : <dep1> <dep2> ... 
... 

而這需要兩個參數

function(target, dep); 

我需要得到這個解析調用我的方法與方法每個目標和DEP如:

function(target1, dep1); 
function(target1, dep2); 
function(target1, ...); 
function(target2, dep1); 
function(target2, dep2); 
function(target2, ...); 

什麼是叫function(target,dep)上的每一行的最有效的方法一個文本文件?我嘗試着用掃描儀和string.split進行鬼混,但沒有成功。我很難過。

謝謝。

+0

什麼是SCANER問題? – jitm 2011-04-28 13:57:57

+0

你可以粘貼你寫的代碼嗎? – 2011-04-28 13:58:23

+0

沒有可發佈的代碼。我最初的想法是將每行保存到一個字符串中,但由於dep的總數是未知的,它需要某種類型的循環正確嗎? – Mike 2011-04-28 13:59:58

回答

8
  • 讀線到String myLine
  • :拆分成myLineString[] array1
  • ' '拆分成array1[1]String[] array2
  • 迭代通過array2並調用function(array1[0], array2[i])

所以...

FileReader input = new FileReader("myFile"); 
BufferedReader bufRead = new BufferedReader(input); 
String myLine = null; 

while ((myLine = bufRead.readLine()) != null) 
{  
    String[] array1 = myLine.split(":"); 
    // check to make sure you have valid data 
    String[] array2 = array1[1].split(" "); 
    for (int i = 0; i < array2.length; i++) 
     function(array1[0], array2[i]); 
} 
+0

將每行加載到它自己的串?或者使用while(hasNextLine)?我理解分裂和迭代,但每條線將如何變成它自己的字符串? – Mike 2011-04-28 14:04:04

+0

你不知道如何打開和閱讀文件? – 2011-04-28 14:06:42

+0

我剛剛提供了這個信息:) – jitm 2011-04-28 14:08:03

1

的,首先,你必須從文件中讀取和這種分裂閱讀行後線,讓你的代碼應該是這樣的:

FileInputStream fstream = new FileInputStream("your file name"); 
// or using Scaner 
DataInputStream in = new DataInputStream(fstream); 
BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
String strLine; 
//Read File Line By Line 
while ((strLine = br.readLine()) != null) { 
    // split string and call your function 
}