2012-11-24 73 views
0

下面的代碼是我試圖從字符串文件讀取,通過每行讀取,直到找到':',然後存儲+打印後的所有內容。然而,打印功能打印出我從文件中讀入的所有內容。有人能發現我要去哪裏嗎?感謝ArrayList混淆

編輯:每一道線條都是以這種形式「在這裏寫一些文字:這裏更多的文本」

public void openFile() { 

     try { 
      scanner = new BufferedReader(new FileReader("calendar.ics")); 
     } catch (Exception e) { 
      System.out.println("Could not open file"); 

     } 

    } 

    public void readFile() { 
     ArrayList<String> vals = new ArrayList<String>(); 
     String test; 

     try { 
     while ((line = scanner.readLine()) != null) 
     { 

     int indexOfComma = line.indexOf("\\:"); // returns firstIndexOf ':' 
     test = line.substring(indexOfComma+1); // test to be everything after ':' 
     vals.add(test); // add values to vals 
     } 
     } catch(Exception ex){ } 

      for(int i=0; i<vals.size(); i++){ 
     System.out.println(vals.get(i)); 
    } 
    } 

回答

4

你不需要逃避你的結腸。

line.indexOf("\\:"); 

更改上面的線: -

line.indexOf(":"); 

因爲,這將搜索\\:,如果沒有發現返回值-1

test = line.substring(indexOfComma+1); 

因此,如果您indexComma-1,這肯定將是,如果你的字符串不包含 - \\:,那麼你的上述行變成了: -

line.substring(0); // same as whole string 

作爲一個建議,在聲明列表時,應該將抽象類型作爲引用的類型。所以,你應該在List聲明的LHS使用List代替ArrayList: -

List<String> vals = new ArrayList<String>(); 
+0

哈感謝,完美的工作,我真的應該知道。 +1 – shanahobo86

+0

@ shanahobo86 ..其實不是你從一開始就知道的一切。當時間到了,你會自動知道它。你不受歡迎:) –

+0

這是真的。有時我對自己感到憤怒,因爲沒有發現這些錯誤,併到StackOverFlow尋求幫助。我試圖提醒自己,這是一條學習曲線,有一天我可能會回答問題,而不是問:-)感謝您的輸入 – shanahobo86