2016-06-02 14 views
0

単語をつぶやきと比較して、それらがテキストに何回出現するかを数える必要があります。 ArrayListとArrayListを比較するために2つのサイクルを使用しましたが、ArrayListの最初の単語は正しく表示されず、カウントしたくありません。ツイートを取得し、ArrayListのJava:配列の最初の項目が正しく表示されない

public ArrayList<String> showTimeLine() throws TwitterException { 
    List<Status> statuses = twitter.getHomeTimeline(new Paging (1,200)); 
    ArrayList<String> allTweets=new ArrayList<String>(); 
    for (Status status : statuses) { 
     allTweets.add(status.getText().replaceAll("https[^\\s]+","").toLowerCase()); 
    }   
    return allTweets; 
} 
に保存する言葉でtxtを

読むとArrayListの

public ArrayList <String> fread(String dir) throws FileNotFoundException, IOException { 
    Scanner s = new Scanner(new File(dir)); 
    ArrayList<String> list = new ArrayList<String>(); 
    while (s.hasNext()){ 
     list.add(s.next().toLowerCase()); 
    } 
    s.close(); 
return list; 
} 

に保存します。これは、二回

私のコードがあるカウントチャンピオンワードになっている Output Image

2つの配列を比較:

public ArrayList<String> result(ArrayList<String>tweets, ArrayList<String> palavras){ 
     for (int i = 0; i <palavras.size() ; i++) { 
      int count = 0; 
      for (int j = 0; j <tweets.size() ; j++) { 
      if (tweets.get(j).contains(palavras.get(i))){ 
       count++; 
      } 
     } 
     numero.add(count); 
     result.add(palavras.get(i)); 
       } 
     return result; 
} 

そして印刷

for (int i = 0; i <result.size() ; i++) { 
     System.out.printf("%40s",result.get(i)+"  "+numero.get(i)+"\n"); 

    } 

静的ArrayListに:

 static ArrayList<Integer> numero = new ArrayList<Integer>(); 
    static ArrayList<String> result = new ArrayList<String>(); 

ありがとう! :)

+0

あなたのprintfステートメントは非常に制限されており、完全には使用していません。 xがintの場合、少なくとも2つの '%xd'ステートメントを使用する必要があります。最初の文字列内では、最後の'%n 'は引用符で囲まれています。つまり、最初のprintfパラメーター内にあります。 2番目と3番目のパラメータは2つの 'get(i)'文でなければなりません。 –

+0

エラーを示す小さなサンプルを提供してください。 –

+0

私はこの問題を解決しました。私は理由はわかりませんが、Windowsのメモ帳でtxtファイルを作成した場合、私はこの "バグ"がありますが、メモ帳でtxtファイルを作成すると、問題なく実行できます。 @HovercraftFullOfEels –

答えて

0
方法で

public ArrayList<String> result(ArrayList<String>tweets, ArrayList<String> palavras){ 
    for (int i = 0; i <palavras.size() ; i++) { 
     int count = 0; 
     for (int j = 0; j <tweets.size() ; j++) { 
     if (tweets.get(j).contains(palavras.get(i))){ 
      count++; 
     } 
    } 
    numero.add(count); 
    result.add(palavras.get(i)); 
      } 
    return result; 

}

あなたのif文は、単一の結果を検索し、終了します。このように修正することができます

public static ArrayList<String> result(ArrayList<String>tweets, ArrayList<String> palavras){ 
    for (int i = 0; i <palavras.size() ; i++) { 
     int count = 0; 
     for (int j = 0; j <tweets.size() ; j++) { 
      boolean isDone = false; //NEW 
      int tweetCharIter = 1; //NEW 
      while (!isDone){ //NEW 
       if (tweets.get(j).substring(tweetCharIter).contains(palavras.get(i))){ //ALTERED 
        tweetCharIter += tweets.get(j).substring(tweetCharIter).indexOf(palavras.get(i)) +1; //ALTERED 
        count++; 
       } else { //NEW 
        isDone = true; //NEW 
       } 
      } 
     } 
     numero.add(count); 
     result.add(palavras.get(i)); 
    } 
    return result; 
} 
+0

元と同じ出力:( –

関連する問題