2011-09-13 14 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. 
      } 
     } 

} 

} 

私は2つのCSVパーサーを作成し、2つのうちの2番目のものを使用して長さを記録しようとしています。私は(上記のように)各単語のint長さの値を別のArraylistに格納しようとしましたが、動作させることはできません。どんな助けでも大歓迎です。これは宿題であることから、解決策を与えることなく

+0

「私はそれを働かせるように見えない」と説明できますか? – Jeremy

答えて

1

...あなたはすべての長さの値を維持するのではなく、それが長いかどうかを判断するために、以前の値に対する現在の長さを比較するだけにして、それを維持している

注意してください。

あなたが一番長い単語を欲しいので、リストではなくただ一つのmaxLength Integer(またはint)が必要なようです。

1行につき最長の単語を使用する場合は、リストが適切な場合があります。

また、SortedListを使用して、リスト内で最大値(最終値)を取得することもできます。

+0

私もそれを試しました。私が心配している主なことは、配列リストに単語が格納されると、配列リストの単語の長さを調べるにはどうすればいいですか? .get()コールは文字列ではなくオブジェクトの長さをチェックすることができませんでした。 – TopChef

+0

文字列をリストに格納したり、文字列の長さを取得したり、SortedListに追加したり、比較する単一の値に格納したりしないでください。 –

+0

ArrayListがパラメータ化されているため、ls.get(i)はStringインスタンスを返します。それ以外の場合は、John B.のアドバイスを参照してください。問題はおそらくCSVParserにありますか? – tichy

関連する問題