2011-09-13 50 views
0

我正在寫一個用逗號分隔單詞的CSVParser程序。我正在嘗試查找並記錄出現在文件中的最長單詞。這是我的班。在ArrayList中查找字符串的長度

import csv.CSVParser; 
import java.io.*; 
import java.util.*; 

public class RecordFormatter { 

public static void main (String[] args) { 
     CSVParser parser = new CSVParser(new File (args[0])); 
     while (parser.hasNextLine()) { 
       ArrayList<String> ls = parser.getNextLine(); 
       for (int i = 0; i<ls.size(); i++) { 
        System.out.print("|" + ls.get(i) + " "); 
        } 
       System.out.print("|"); 
       System.out.println(); 
     } 
     CSVParser parser1 = new CSVParser(new File (args[0])); 
     ArrayList<Integer> maxCol = new ArrayList<Integer>(); 
     while (parser1.hasNextLine()) { 
      ArrayList<String> ls1 = parser1.getNextLine(); 
      for (int i = 0; i<ls1.size(); i++) { 
       maxCol.add(ls1.get(i)); //Here is where my bug occurs. 
      } 
     } 

} 

} 

我已經創建了兩個CSVParsers,並試圖使用二者中的第二個來記錄長度。我試過(如上所見),將每個單詞的int長度值存儲到另一個Arraylist中,但似乎無法使其工作。任何幫助將非常感激。

+0

你能解釋「我似乎無法讓它工作」 – Jeremy

回答

1

不給解決方案,因爲這是功課...

請注意,您把每一個長度值,而不是與先前的值比較當前的長度,以確定它是否長,然後才保持它。

好像你只需要一個maxLength Integer(或int)而不是一個列表,因爲你只需要最長的單個單詞。

如果你想要每行最長的單詞,那麼列表可能是適當的。

另一種選擇是使用SortedList並獲得列表中的最大值(最後一個值)。

+0

我也嘗試過。我關心的主要問題是,一旦我將單詞存儲在數組列表中,我該如何去查找數組列表中單詞的長度? .get()調用返回一個對象,而不是一個字符串,我無法檢查它的長度。 – TopChef

+0

不要將字符串存儲在列表中,檢索字符串的長度並將其添加到SortedList中,或將其存儲在您比較的單個值中。 –

+0

ls.get(i)爲您提供了一個String實例,因爲ArrayList被參數化了。否則,請遵循John B.的建議。可能問題出在CSVParser內? – tichy

相關問題